Главная страница
    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.46 MB
Время: 0.046 c
14-1097750932
TUser
2004-10-14 14:48
2004.10.31
Интересно, как такое можно сделать


1-1097856511
Гость
2004-10-15 20:08
2004.10.31
Пишу тест! Помогите!


14-1097588892
Алхимик
2004-10-12 17:48
2004.10.31
Что бы это могло быть?


4-1095319848
Чапаев
2004-09-16 11:30
2004.10.31
MailSlots


6-1093416257
BVV
2004-08-25 10:44
2004.10.31
idMappedPortTCP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский