Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

перевод 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.034 c
14-1097675011
matt
2004-10-13 17:43
2004.10.31
Программирование микрокроцессоров


8-1091344032
race1
2004-08-01 11:07
2004.10.31
mpeg header


1-1097676888
П7
2004-10-13 18:14
2004.10.31
Тут 2 поста натолкнули на вопрос


1-1097530297
Ezhik
2004-10-12 01:31
2004.10.31
Ход конём


14-1097582963
Nick Denry
2004-10-12 16:09
2004.10.31
http://www.sodipodi.com/





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский