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

Вниз

Получить из массива байт строку с HEX-текстом   Найти похожие ветки 

 
Maverick ©   (2005-09-14 17:20) [0]

Доброго времени суток, мастера.

есть массив байт типа
var
 Arr: array of byte;

как его преобразовать в строчку с HEX-текстом?


 
Ega23 ©   (2005-09-14 17:26) [1]


const
 HEXValues:array[0..255] of String = ("00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F",
   ..............................
 "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF");        
var
i:Integer;
ss:string;
begin
ss:="";
for i:=Low(Arr) to High(Arr) do ss:=ss+HEXValues[Arr[i]];
ShowMessage(ss);
end;


 
DesWind ©   (2005-09-14 17:31) [2]

IntToHex


 
SergP.   (2005-09-14 17:35) [3]

s:="";
for i:=low(arr) to high(arr) do s:=s+inttohex(arr(i),2);

Вроде бы так


 
begin...end ©   (2005-09-14 17:48) [4]

> Maverick ©   (14.09.05 17:20)

См. в справке описание функции BinToHex из модуля Classes.


 
Maverick ©   (2005-09-14 17:49) [5]

спасибо
и еще вопрос по поводу inttohex..

string можно перевести в hex:
var
 s,ss: string;
for i := 1 to Length(s) do
begin
     ss := ss + IntToHex(Ord(s[i]),2);
end;

а как обратно?

вопросы наверно детские , но что то у меня туго с переводами всегда было :)


 
begin...end ©   (2005-09-14 17:54) [6]

> Maverick ©   (14.09.05 17:49) [5]

См. в справке описание функции HexToBin из модуля Classes.


 
Германн ©   (2005-09-14 18:01) [7]

2 Maverick ©   (14.09.05 17:49) [5]

> а как обратно?


StrToInt("$"+s);


 
begin...end ©   (2005-09-14 18:33) [8]


> описание функции HexToBin из модуля Classes.


 
begin...end ©   (2005-09-14 18:36) [9]

Сорри, [8] нечаянно отправил. Баловался с новым интерфейсом форума :)

Мой вариант:

var
 A: array of Byte;
 L: Integer;
 S: string;
begin

 // Из A в S

 L := Length(A);
 SetLength(S, 2 * L);
 BinToHex(PChar(A), PChar(S), L);

 // Из S в A

 L := Length(S) div 2;
 SetLength(A, L);
 HexToBin(PChar(S), PChar(A), L);

end.


 
Maverick ©   (2005-09-14 18:50) [10]

> begin...end ©   (14.09.05 18:36) [9]
 реал сенкс :)

и все таки я не понял. у меня есть hex текст (типа 13cea9feed125dd5cc092a)
как преобразовать обрано в нормальный стринг?


 
begin...end ©   (2005-09-14 18:53) [11]

> Maverick ©   (14.09.05 18:50) [10]

Что есть "нормальный стринг"? Нужно перевести строку, содержащую шестнадцатеричные представления кодов символов в строку, содержащую сами эти символы? Или что?


 
Maverick ©   (2005-09-14 18:55) [12]

да,именно.

сорри, я уже торможу под вечер.


 
begin...end ©   (2005-09-14 19:03) [13]

> Maverick ©   (14.09.05 18:55) [12]

Ну так [9] как раз подходит:

var
 Str, Hex: string;
 L: Integer;
begin
 Hex := "13cea9feed125dd5cc092a";
 L := Length(Hex) div 2;
 SetLength(Str, L);
 HexToBin(PChar(Hex), PChar(Str), L)
end.


Важно, чтобы шестнадцатеричное представление состояло только из символов "0".."9" и "a".."f", т.е., в том числе, не содержало заглавных символов "A".."F". Если оно их содержит, то перед передачей строки в HexToBin всю её надо привести к нижнему регистру (LowerCase).


 
Maverick ©   (2005-09-14 19:07) [14]

да, точно :)
ок, ну наконец то разобрался.

спасибо большое!



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

Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
1-1126449004
lmz
2005-09-11 18:30
2005.10.02
Цветной DBGrid


1-1126183793
Толян
2005-09-08 16:49
2005.10.02
подсчет трафика


3-1124169017
rentgen
2005-08-16 09:10
2005.10.02
Как выделить строку в DBGrid ?


1-1126514942
Wolferio
2005-09-12 12:49
2005.10.02
*.xls и *.doc фотраты


1-1126176175
РУДЗРУДЗ
2005-09-08 14:42
2005.10.02
не работает ссылка ???





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