Главная страница
    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-1126183793
Толян
2005-09-08 16:49
2005.10.02
подсчет трафика


1-1126000466
melena
2005-09-06 13:54
2005.10.02
jpg в exe


1-1125928937
highlander
2005-09-05 18:02
2005.10.02
Работа с сервисами в WinXP


1-1126613170
vishnia
2005-09-13 16:06
2005.10.02
Текст на исп.,французском, польском языках в элементах управления


1-1126592148
Тормаз
2005-09-13 10:15
2005.10.02
компоненты для p2p





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