Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

перевод 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо