![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Hex в String и наоборот [D7, WinXP]
Al1 © (2004-11-21 18:35:00)Мастера подскажите пожалуйста как из Hex переводить в String и наоборот. Есть у меня например некая последовательность байт: Buf: array of Byte
мне надо етот Buf перевести в строку, содержашую его HEX формат
s : string , где длина строки получиться равной длине Buf * 2 и обратно!
Может есть некие компоненты, с помошью которых можно было бы легко оперировать с HEX?
KilkennyCat (2004-11-21 19:36:00) [41]
> begin...end © (21.11.04 19:34) [10]
у него впереди 00 :)
begin...end (2004-11-21 19:36:00) [42]
> [9] al1 (21.11.04 19:29)
Ну а вообще обрабатывай строку в цикле, по 2 символа, каждый кусочек переводи в Byte с помощью StrToInt, а потом можно получить символ, соответствующий этому коду, с помощью Chr().
begin...end (2004-11-21 19:34:00) [43]
> [9] al1 (21.11.04 19:29)
Чего-то у тебя не так в консерватории, где там 6 байт, я только 5 вижу.
al1 (2004-11-21 19:29:00) [44]нет мне надо чуть другое:
есть у меня Buf: array of Byte, в котором имееться 6 байт: 6D6F757365 а мне надо например в s:String получить из етого слово mouse и в SHex: string получить '6D6F757365'. (ы у меня получиться длиной в 5 символов а SHex длиной в 10 символов)
Т.е мне надо знать как мне можно конвертировать из Buf в String и в StringinHex и наоборот!
palva (2004-11-21 19:29:00) [45]Я не прав, не
IntToHex(Buf[i])
а как написал SergP
IntToHex(Buf[i], 2)
Хотя тут тоже проблема с ведущим нулем. Наверно без Format здесь не обойтись, хотя лично я написал бы непосредственно преобразование
Anatoly Podgoretsky (2004-11-21 19:27:00) [46]palva © (21.11.04 19:25) [6]
Хоть бы не приводил ошибочного кода
palva (2004-11-21 19:25:00) [47]где длина строки получиться равной длине Buf * 2 и обратно
Ага, кажется, я понял. Каждый байт нужно представить в виде двух шестнадцатиричных цифр. Тогда можно так:
s := '';
for i := 0 to ...
begin
s := s + IntToHex(Buf[i])
end
SergP (2004-11-21 19:22:00) [48]
> Мастера подскажите пожалуйста как из Hex переводить в String
> и наоборот.
1.) Из HEX в String (вернее из integer, byte и других целочисленных типов в string в HEX формате)
a) function IntToHex(Value: Integer; Digits: Integer): string;
b) format (уже в предідущих постах объяснили)
2.) Обратно
function StrToInt(const S: string): Integer;
пример: MyInteger:=StrToInt('$'+MyString);
begin...end (2004-11-21 19:12:00) [49]
> [2] al1 (21.11.04 18:56)
А работать так: Format('%x', [IntegerValue]).
Anatoly Podgoretsky (2004-11-21 19:08:00) [50]Al1 (21.11.04 18:35)
Нет необходимости, Hex уже String, соответственно и наоборот.
Но в самой теме почему то уже говоришь про байты.
al1 (2004-11-21 18:56:00) [51]
> Pat
И как мне с ней работать? помоему format не будет решением [0]
Pat (2004-11-21 18:40:00) [52]См функцию format()