Форум: "Основная";
Текущий архив: 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