Главная страница
    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.004 c
3-1123590776
PAI
2005-08-09 16:32
2005.10.02
Динамическое создание Lookup полей.


1-1126367091
lionts
2005-09-10 19:44
2005.10.02
Импорт перемненных из внешних модулей


1-1126170371
Signate
2005-09-08 13:06
2005.10.02
Хранение данных


1-1126078099
Alpine
2005-09-07 11:28
2005.10.02
Как лучше округлять денежные значения ?


1-1125924627
Dr. Genius
2005-09-05 16:50
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский