![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
перевод Integer в 4-ре char`а [D5, Win2k]
Неуловимый Джо © (2004-10-13 17:57:00)Народ, подскажите плиз, как перевести (разложить) integer на 4-ре байта и обратное преобразование
AlexKocharin (2004-10-14 11:09:00) [1]А лучше так:
var a:record
case byte of
1:(int:integer);
2:(bytes:array[1..sizeof(integer)] of byte);
3:(chars:array[1..sizeof(integer)] of char);
end;
Вместо integer теперь можно ставить все, что угодно.
AlexKocharin (2004-10-14 11:04:00) [2]
var a:record
case byte of
1:(int:integer);
2:(bytes:array[1..4] of byte);
3:(chars:array[1..4] of char);
end;
Записываешь integer в a.int - читаешь массив байт в a.bytes или a.chars (байты или символы соответственно);
Записываешь массив байт в a.bytes или a.chars - читаешь integer в a.int;
ALEIIIKA (2004-10-14 10:24:00) [3]
i := (Ord('c') shl 24)+//63
(Ord('a') shl 16)+//61
(Ord('m') shl 8)+// 6D
Ord('k'); //6B
//i := 1667329387;
c1 := Chr((I shr 24) AND $FF);
c2 := Chr((I shr 16) AND $FF);
c3 := Chr((I shr 8) AND $FF);
c4 := Chr(I AND $FF);
Туда и обратно.
Defunct (2004-10-13 20:31:00) [4]> как перевести (разложить) integer на 4-ре байта
Type TBytes = packed Record
C4 : Byte;
C3 : Byte;
C2 : Byte;
C1 : Byte;
End;
I : Integer;
with TBytes(i) do
begin
C4 := 0;
C3 := 55;
C2 := 0
C1 := 55;
end;
Неуловимый Джо (2004-10-13 18:10:00) [5]задача была без hi/lo, но фсе равно сенкс
WondeRu (2004-10-13 18:05:00) [6]а вообще лучше стандартными операциями:
ch1 := Hi(HiWord(i));
ch2 := Lo(HiWord(i));
ch3 := Hi(LoWord(i));
ch4 := Lo(LoWord(i));
Неуловимый Джо (2004-10-13 18:04:00) [7]сенка!
WondeRu (2004-10-13 18:03:00) [8]i: Integer;
p : PChar;
begin
CopyMemory(p, @i, 4);
ch1 := Char(p[0]);
ch2 := Char(p[1]);
ch3 := Char(p[2]);
ch4 := Char(p[3]);
.....
end;
Cosinus (2004-10-13 17:59:00) [9]IntToHex + F1
Обратно
// Функция перевода (НЕХ-представление числа):string в Integer
// Пример: HexToInt('10':string)=16:integer
function HexToInt(Value:String):int64;
Var
s:string;
begin
result:=0;
S:='$'+Value;
Result:=StrToInt(s);
end;