![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Шестнадцатиричная система исчисления
ssmaxx © (2004-11-03 12:47:00)День добрый. Не подскажете, как работать с шестнадцатиричными числами (типа 1А, 2F, и т.д.), а именно: как их просмотреть, если они сидят в переменной типа Integer. И есть ли какие-нибудь специальные процедуры их обработки.
ssmaxx (2004-11-03 13:36:00) [1]
> S2 := IntToHex(StrToIntDef(S1, 0) + 1, 2);
БОЛЬШОЕ СПАСИБО!!!!
ssmaxx (2004-11-03 13:31:00) [2]
> Reindeer Moss Eater © (03.11.04 12:50) [1]
> IntToHex.
Спасибо!
TUser (2004-11-03 13:28:00) [3]А если хочешь ручками век сделать, тогда так
function EnLarge(S:string):string;
const L:array [0..15] of char =
('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
var i:integer;
c:char;
f:boolean;
begin
if S = '$' then begin
result:='$1';
Exit; // :((((
end;
S:=LowerCase(S);
c:=S[length(S)];
f:=true; i:=0;
while f and (i < length(L)) do
if L[i] <> c then
inc (i)
else f:=false;
if f then
raise Exception.Create('jopa');
if i < length(L)-1 then
S[length(S)]:=L[i+1]
else
S:=EnLarge(copy(S,1,length(S)-1))+'0';
result:=S;
end;
begin...end (2004-11-03 13:22:00) [4]
> [7] ssmaxx (03.11.04 13:10)
var
S1, S2: String;
begin
S1 := '$1F';
S2 := IntToHex(StrToIntDef(S1, 0) + 1, 2);
ShowMessage(S2)
end.
TUser (2004-11-03 13:17:00) [5]val вполне нормально понимает hex-числа
Reindeer Moss Eater (2004-11-03 13:11:00) [6]Зашибись.
А это кто сказал:
если они сидят в переменной типа Integer.
ssmaxx (2004-11-03 13:10:00) [7]Я наверно неправильно выразился. Что мне надо: у меня в текстовом файле есть строка:
1F
Следующей строкой я хочу поставить число, на единицу большее. Как это сделать, я не знаю (т.к. необходимо строковое представление).
TUser (2004-11-03 13:08:00) [8]Столько пальцев необходимо для управления клавиатурой будущего.
begin...end (2004-11-03 13:06:00) [9]
> [3] Юрий Зотов © (03.11.04 13:00)
> А в BIN - 100000100.
Э-э... Разве это 20?
P.S. Не хотел бы я иметь столько пальцев... 8-)
TUser (2004-11-03 13:05:00) [10]
> Все это РАЗНЫЕ строки - но разве количество пальцев у Вас
> меняется, в какой бы системе его не записали?
А в попугаях-то я гооораздо длиннее (С)
Юрий Зотов (2004-11-03 13:00:00) [11]> ssmaxx (03.11.04 12:47)
Понимаете, шестнадцатиричных ЧИСЕЛ не существует. И десятичных тоже. И никаких других ЧИСЕЛ тоже не существует.
А существуют шестнадцатиричные, десятичные и прочие СТРОКОВЫЕ представления чисел. То есть, СТРОКИ, а не ЧИСЛА.
Вот у Вас 20 пальцев. Это в DEC. А в HEX их будет 14. А в BIN -
100000100. Все это РАЗНЫЕ строки - но разве количество пальцев у Вас меняется, в какой бы системе его не записали?
Digitman (2004-11-03 12:51:00) [12]
> если они сидят в переменной типа Integer
в переменной типа Integer никакие "шестнадцатиричные числа" не "сидят"... равно как и в переменной любого другого типа.
если же тебе нужно получить содержимое переменной типа Integer в шестнадцатеричноми представлении, то для этого есть ф-ция IntToHex()
Reindeer Moss Eater (2004-11-03 12:50:00) [13]IntToHex.
Только они там не сидят.
Кто ж их посадит?
Это же цифры!