Delphi: преобразовать TByte в соответствующее шестнадцатеричное значение в AnsiString - PullRequest
3 голосов
/ 11 августа 2010

Я пытаюсь вывести значение TByte в виде соответствующего шестнадцатеричного представления в AnsiString.

Пример: TByte 0x4F AnsiString: "4F" (два символа, 4 и F)

Я знаю о функции StringOf, но она преобразуется в «сопоставленный» символ.

Есть ли приличная встроенная функция или у кого-то есть хорошая идея, как реализовать это быстро?

Заранее большое спасибо:)

Ответы [ 2 ]

10 голосов
/ 11 августа 2010

Я бы преобразовал его в байт и передал в SysUtils.IntToHex.

0 голосов
/ 10 апреля 2018

Функция форматирования присутствует с дней Турбо Паскаля, а функции SysUtils Hex недоступны.

Так что для любой версии Delphi до D2010 используйте команду форматирования:

lByteAsHex := format('%.2x',[AByte]);

Спецификатор точности .2 гарантирует, что всегда есть начальные нули.

Следующая строка:

lIntAsHex = format('%x',[AInt]);

обрабатывает целое число любого размера (включая int64), но не ставит начальные нули, поэтому format(%x,[10]) вернет 'A', тогда как format('%.2x',[10] вернет '0A'

...