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

Вниз

Получить из массива байт строку с 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.047 c
1-1126629913
Дмитрий_05
2005-09-13 20:45
2005.10.02
Popup меню раскрыть и скрыть


8-1116261740
pahan07
2005-05-16 20:42
2005.10.02
как midi связано с темпом?


1-1126244691
yk
2005-09-09 09:44
2005.10.02
принудительная прокрутка пор Win 98


4-1123222622
WebSQLNeeder
2005-08-05 10:17
2005.10.02
Как на Делфи изменить настройки прокси-сервера ИЕ?


14-1126086433
Rentgen
2005-09-07 13:47
2005.10.02
Как скачать фриибсд?