Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Преобразование строки с HEX-кодами к строке символов и обратно (Функции StrToHex и HexToStr)

Delphi , Синтаксис , Преобразования

Под сторокой с HEX-кодами подразумеваю 7B2EB3749AA32C093A6493EE96985D96

function StrToHex(Const Source: String): String;
var
  c:Char;
begin
  Result := '';
  for c in Source do
    Result := Result + IntToHex(Integer(c), 2);
end;


function HexToStr(HexStr : String; const Text : boolean = True) : string;
var
  Hex : byte;
  sTemp : string;
  i : integer;
begin
  Result := '';
  if Length(HexStr) mod 2 <> 0 then
    Exit;//('Неправельная длина строки');

  for i := 2 to Length(HexStr) do
    if i mod 2 = 0 then begin
      sTemp := '$' + Copy(HexStr, i - 1, 2);
      Hex := Byte(StrToInt(sTemp));

      if Hex = $00 then begin
        if Text then
          Result := Result + ' '
        else
          Result := Result + #$00;
        Continue;
      end;
      Result := Result + chr(Hex);
    end;
end;

Переведенный текст на русский язык:

Код Delphi состоит из двух функций: StrToHex и HexToStr. Первая функция, StrToHex, принимает строку в качестве входного параметра и возвращает ее hexadecimal-представление. Вторая функция, HexToStr, принимает hexadecimal-сокращение в качестве входного параметра и возвращает исходную строку.

Функция StrToHex

Эта функция проходит по каждому символу в входной строке и конвертирует его в соответствующее hexadecimal-значение с помощью функции IntToHex. Полученные hexadecimal-значения конкатенируются в одну строку, которая затем возвращается как результат.

Вот шаг за шагом, как работает эта функция:

  1. Инициализируйте пустую строку результата.
  2. Проходите по каждому символу c в входной строке Source.
  3. Конвертируйте символ в его целочисленное значение с помощью функции Integer.
  4. Используйте функцию IntToHex, чтобы конвертировать целочисленное значение в его hexadecimal-представление как строку.
  5. Конкатенируйте полученную hexadecimal-строку к концу строки результата.
  6. Возвращает финальную строку результата.

Функция HexToStr

Эта функция принимает hexadecimal-сокращение в качестве входного параметра и возвращает исходную строку. Вот шаг за шагом, как работает эта функция:

  1. Инициализируйте пустую строку результата.
  2. Проверьте, является ли длина входной hex-строки нечетной. Если да, верните сразу (в этом случае код не предоставляет сообщение об ошибке).
  3. Проходите по каждой паре символов в входной hex-строке (начиная с индекса 2 до конца).
  4. Извлекайте двухсимвольное hexadecimal-значение из входной строки.
  5. Конвертируйте это hexadecimal-значение в соответствующее байтовое значение с помощью функций Byte и StrToInt.
  6. Проверьте, является ли полученное байтовое значение равным $00. Если да, добавьте символ пробела или null-символ (#$00) к строке результата в зависимости от параметра Text (который по умолчанию имеет значение True).
  7. В противном случае конвертируйте байтовое значение в соответствующий ASCII-символ с помощью функции Chr и добавьте его к строке результата.
  8. Верните финальную строку результата.

Замечания

  • Функция HexToStr предполагает, что входное hexadecimal-сокращение является корректным и не содержит никаких недопустимых символов.
  • Если входная hex-строка содержит null-символы (#$00), они будут сохранены в строке результата, если Text имеет значение True.
  • Код не обрабатывает ошибки или исключения, поэтому необходимо убедиться, что входные строки являются корректными и правильно форматированными.

Альтернативное решение

Если вы ищете более эффективный способ выполнить эти конверсии, можно рассмотреть использование встроенных функций Delphi, таких как:

  • EncodeString (для кодирования строки в ее hexadecimal-представление)
  • DecodeHexByteString (для декодирования hexadecimal-сокращения обратно в его исходное байтовое значение)

Эти функции могут упростить процесс конверсии и уменьшить риск ошибок.

Например, можно переписать функцию StrToHex следующим образом:

function StrToHex(Source: String): String;
begin
  Result := EncodeString(Source);
end;

И функцию HexToStr следующим образом:

function HexToStr(HexStr: String; const Text: boolean = True): string;
var
  Bytes: TBytes;
begin
  Bytes := DecodeHexByteString(HexStr);
  if Text then
    Result := UTF8ToString(Bytes)
  else
    Result := BytesToString(Bytes);
end;

Преобразование строк с HEX-кодами к строкам символов и обратно обеспечивается использованием функций StrToHex и HexToStr, которые конвертируют вводную строку в формат 16-ричных кодов и обратно.


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

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Преобразования ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 06:50:54/0.0035679340362549/0