Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Показывать значения в шестнадцатеричном представлении

Delphi , Синтаксис , Типы и Переменные

Показывать значения в шестнадцатеричном представлении

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

function HexB(b: Byte): string;
 const
   HexChar: array[0..15] of char = '0123456789ABCDEF';
 begin
   HexB := HexChar[b shr 4] + HexChar[b and $0F];
 end;

 function HexW(w: Word): string;
 begin
   HexW := HexB(Hi(w)) + HexB(Lo(w));
 end;

 function HexL(l: Longint): string;
 var
   HL: HiLo absolute l;
 begin
   HexL := HexW(HL.HiWord) + HexW(HL.LoWord);
 end;

 function HexP(p: Pointer): string;
 var
   HL: HiLo absolute p;
 begin
   HexP := HexW(HL.HiWord) + ':' + HexW(HL.LoWord);
 end;

Here's the translation of the text into Russian:

Этот набор функций, написанных на Delphi/Pascal, конвертирует целые числа в их представление в виде строк hexadecimal.

Рассмотрим каждый функцию:

  1. HexB(b: Byte): string;
    • Функция принимает одиночный байт (8-битное целое число) как входной параметр и возвращает его представление в виде строки hexadecimal.
    • Она использует массив HexChar, содержащий символы hexadecimal от '0' до '9', 'A' до 'F'.
    • Функция сдвигает значение байта на 4 бита вправо (b shr 4) для получения высокого порядка nibble, а затем использует это значение как индекс для массива HexChar.
    • Она делает то же самое для низшего порядка nibble, сдвигая оригинальное значение на 4 бита влево (b and $0F) и используя его как индекс для массива HexChar.
    • Два символа hexadecimal конкатенируются для формирования финальной строки представления.
  2. HexW(w: Word): string;
    • Функция принимает слово (16-битное целое число) как входной параметр и возвращает его представление в виде строки hexadecimal.
    • Она просто вызывает функцию HexB два раза, один раз для каждого nibble слова, конкатенируя результаты для формирования финальной строки.
  3. HexL(l: Longint): string;
    • Функция принимает длинное целое число (32-битное или 64-битное в зависимости от платформы) как входной параметр и возвращает его представление в виде строки hexadecimal.
    • Она использует запись HiLo для извлечения высокого порядка слова (HL.HiWord) и низшего порядка слова (HL.LoWord) из длинного целого числа.
    • Затем она вызывает функцию HexW два раза, один раз для каждого слова, конкатенируя результаты для формирования финальной строки.
  4. HexP(p: Pointer): string;
    • Функция принимает указатель как входной параметр и возвращает его представление в виде строки hexadecimal.
    • Как и функция HexL, она использует запись HiLo для извлечения высокого порядка слова (HL.HiWord) и низшего порядка слова (HL.LoWord) из указателя.
    • Затем она вызывает функцию HexW два раза, один раз для каждого слова, конкатенируя результаты с двоеточием (:) между ними. Это, вероятно, используется для представления адресов памяти в виде строки hexadecimal.

Функции хорошо организованы и легко понятны. Однако стоит отметить, что Delphi имеет встроенную поддержку конвертации целых чисел в строковые представления hexadecimal с помощью функции IntToHex, которая может сделать эти кастомные реализации менее необходимыми.

Альтернативным решением может быть использование функции Format или подхода строковой конкатенации для достижения аналогичного результата:

function HexB(b: Byte): string;
begin
  Result := IntToStr(b) + ' ';
end;

function HexW(w: Word): string;
begin
  Result := HexB(Hi(w)) + HexB(Lo(w));
end;

// ... и так далее ...

Этот подход более компактен и может быть проще для чтения и поддержки. Однако оригинальное реализация имеет свои достоинства, такие как четкая разделение забот между функциями конвертации.

В статье описывается функция HexB, которая преобразует байтовые значения в шестнадцатеричное представление.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Типы и Переменные ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-20 10:26:02/0.0073750019073486/2