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

Преобразование в EBCDIC

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

Преобразование в EBCDIC

Автор: Matthew Augier

- Ну какой ты гад, ну какой ты гад! - сказал громко Билл Гейтс и улыбнулся своему отражению.


Const
  a2e: array [0..255] of byte =

(000,001,002,003,055,045,046,047,022,005,037,011,012,013,014,159,
016,017,018,019,182,181,050,038,024,025,063,039,028,029,030,031,
064,090,127,123,091,108,080,125,077,093,092,078,107,096,075,097,
240,241,242,243,244,245,246,247,248,249,122,094,076,126,110,111,
124,193,194,195,196,197,198,199,200,201,209,210,211,212,213,214,
215,216,217,226,227,228,229,230,231,232,233,173,224,189,095,109,
121,129,130,131,132,133,134,135,136,137,145,146,147,148,149,150,
151,152,153,162,163,164,165,166,167,168,169,192,106,208,161,007,
104,220,081,066,067,068,071,072,082,083,084,087,086,088,099,103,
113,156,158,203,204,205,219,221,224,236,252,176,177,178,062,180,
069,085,206,222,073,105,154,155,171,015,186,184,183,170,138,139,
060,061,098,079,100,101,102,032,033,034,112,035,114,115,116,190,
118,119,120,128,036,021,140,141,142,065,006,023,040,041,157,042,
043,044,009,010,172,074,174,175,027,048,049,250,026,051,052,053,
054,089,008,056,188,057,160,191,202,058,254,059,004,207,218,020,
225,143,070,117,253,235,238,237,144,239,179,251,185,234,187,255);


Procedure StringA2E(var StringToConvert:String);
Var     
  Loop: Integer;
begin
  For Loop := 1 to length(StringToConvert) do
    StringToConvert[Loop] := a2e[ord(StringToConvert[Loop])];
end;

Это реализация рутины преобразования в Delphi, которая переводит строку из ASCII в EBCDIC. Функция StringA2E принимает переменную длины строки как входной параметр и модифицирует ее на месте, заменяя каждый символ соответствующим кодом EBCDIC.

Вот разбивка кода:

  1. Первая секция определяет массив a2e, содержащий 256 элементов, которые соответствуют кодам ASCII (0-255). Каждый элемент представлен значением байта.
  2. Процедура StringA2E принимает переменную длины строку как входной параметр, обозначенную как StringToConvert.
  3. Внутри процедуры цикл iterates over каждый символ в входной строке с помощью цикла For.
  4. Для каждого символа функция ord используется для получения его кода ASCII (0-255).
  5. Массив a2e индексируется с помощью кода ASCII, чтобы получить соответствующий код EBCDIC.
  6. Полученный код EBCDIC присваивается обратно входной строке с помощью выражения StringToConvert[Loop] := a2e[ord(StringToConvert[Loop])];.

Обратите внимание, что это реализация предполагает, что входная строка содержит только символы с кодами ASCII между 0-255, что является разумной гипотезой для большинства практических целей. Если вам нужно обрабатывать неASCII-символы или символы вне диапазона 0-255, вы может потребоваться модифицировать код соответствующим образом.

Вот альтернативное решение с более компактным и современным подходом:

function StringA2E(const StringToConvert: string): string;
var
  CharCode: Integer;
begin
  Result := '';
  for CharCode in StringToConvert do
    Result := Result + Chr(a2e[CharCode]);
end;

В этом реализации используется функция Chr для преобразования каждого кода ASCII в соответствующий символ EBCDIC, а результаты конкатенируются с помощью переменной Result. Входная строка все еще обрабатывается символ за символом, но индексация происходит более эффективно с помощью переменной цикла, а не явного счетчика цикла.

Преобразование текста в кодировку EBCDIC: статья описывает алгоритм преобразования ASCII-строки в строку, представленную в кодировке EBCDIC, с использованием таблицы конвертации a2e.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:09:04/0.0057718753814697/1