Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: CL | DM;

Вниз

перевод Integer в 4-ре char`а   Найти похожие ветки 

 
Неуловимый Джо   (2004-10-13 17:57) [0]

Народ, подскажите плиз, как перевести (разложить) integer на 4-ре байта и обратное преобразование


 
Cosinus ©   (2004-10-13 17:59) [1]

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;


 
WondeRu ©   (2004-10-13 18:03) [2]

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;


 
Неуловимый Джо   (2004-10-13 18:04) [3]

сенка!


 
WondeRu ©   (2004-10-13 18:05) [4]

а вообще лучше стандартными операциями:

ch1 := Hi(HiWord(i));
ch2 := Lo(HiWord(i));
ch3 := Hi(LoWord(i));
ch4 := Lo(LoWord(i));


 
Неуловимый Джо   (2004-10-13 18:10) [5]

задача была без hi/lo, но фсе равно сенкс


 
Defunct ©   (2004-10-13 20:31) [6]

> как перевести (разложить) 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;


 
ALEIIIKA   (2004-10-14 10:24) [7]

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);

Туда и обратно.


 
AlexKocharin ©   (2004-10-14 11:04) [8]

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;


 
AlexKocharin ©   (2004-10-14 11:09) [9]

А лучше так:

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 теперь можно ставить все, что угодно.



Страницы: 1 вся ветка

Текущий архив: 2004.10.31;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
14-1097565062
AlexG
2004-10-12 11:11
2004.10.31
Менеджеры для разработки проектов на Delphi группой разработчиков


4-1095950229
Асякин
2004-09-23 18:37
2004.10.31
Чтение в памяти


3-1096522956
Morj
2004-09-30 09:42
2004.10.31
DBF в ДОСовой


4-1096369543
Comp
2004-09-28 15:05
2004.10.31
Как отрисовывать графику в STATUSBAR-e?


3-1096557345
Vemer
2004-09-30 19:15
2004.10.31
отображение полей TimeStamp в IbExpert