Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Hex в String и наоборот [D7, WinXP]


Страницы:   1 2 3

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()


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо