Функции преобразования переводят некоторые значения из одной формы представления в другую. Двойки в именах функций являются порождением игры английских слов TWO (два) и ТО (в), которые на слух звучат практически одинаково. Буквы в именах функций означают:
B - Binary - двоичное; C - Character - литера; D - Decimal - десятичное; X - heXadecimal - шестнадцатеричное.
Поэтому, например С2В читается как "Character(s) To Binary" - ASCII-значение (значения) литер(ы) преобразовать в двоичное число. Следует помнить, что ARexx хранит абсолютно все данные в виде строк.
B2C()str = B2C(<двоичное_число>)
Дает строку, соответствующую ASCII-значению двоичного числа. Между границами отдельных байт можно вставлять пробелы. Примеры:
say В2С(1000001) ==> А say В2С(1000010 01000001) ==> ВА
C2B()bin = C2B(<строка>)
Возвращает строку, являющуюся по сути двоичным числом. Двоичные представления составляющих строку литер при этом "сцепляются" друг с другом. Незначащие нули не отбрасываются. Пример:
say С2В('АВ') => 0100000101000010
C2D()dec = C2D(<строка>,[,<число_литер>])
Возвращает строку, являющуюся по сути десятичным числом. В случае, если исходная строка содержит единственную литеру, возвращается ее ASCII-значение. В противном случае строка вначале переводится в двоичную форму (как в С2В), затем это двоичное число переводится в десятичное. Исходная строка должна иметь не более 4-х литер. Дополнительный параметр "число_литер", который может принимать значения от 1 до 4, позволяет обработать не всю исходную строку, а только несколько первых литер в соответствии со значением этого параметра. Если в исходной строке литер меньше, нежели значение параметра "число_литер", то строка дополняется необходимым количеством нулей. Примеры:
say C2D('A') ==> 65 say C2D('AB') ==> 16706 say C2D('ABC', 2} ==> 16706
C2X()hex = C2X(<строка>)
Возвращает строку, являющуюся по сути шестнадцатеричным числом. Шестнадцатеричные представления составляющих строку литер при этом "сцепляются" друг с другом. Пример:
say С2Х('АВ') ==> 4142
D2C()str = D2C(<десятичное_число>[,<число_литер>])
Преобразует десятичное число в соответствующую ему строку. Дополнительный параметр "число_литер" может вызвать или обрезку строки до нужной длины, или дополнение ее незначащими нулями. Пример:
say D2C(65) ==> А
D2X()hex = D2X(<десятичное_число>[,<число_литер>])
Преобразует десятичное число в шестнадцатеричное. Дополнительный параметр "число_литер" может вызвать или обрезку полученной строки, представляющей шестнадцатеричное число, до нужной длины, либо дополнение этой строки незначащими нулями. Пример:
say D2X(65) ==> 41
X2C()str = X2C(<шестнадцатеричное_число>])
Возвращает строку, являющуюся ASCII-представлением шестнадцатеричного числа. В случае нечетного количества литер в исходной строке, являющейся представлением шестнадцатеричного числа, к строке слева будет автоматически добавлен ноль, что позволит правильно определять границы отдельных байтов. Пример:
say X2C('414243') ==> ABC
X2D()str = X2D(<шестнадцатеричное_число>[,<число_литер>])
Преобразует шестнадцатеричное число в десятичное. Текущая установка NUMERIC DIGITS определяет максимальную длину числа, которое может быть возвращено без генерации сообщения об ошибке. В случае нечётного количества литер в исходной строке, являющейся представлением шестнадцатеричного числа, к строке слева будет автоматически добавлен ноль, что позволит правильно определять границы отдельных байтов. Дополнительный параметр "число_литер" может вызвать либо обрезку до нужной длины полученной строки, представляющей десятичное число, либо дополнение этой строки незначащими нулями. Пример:
say X2D(ab9f) ==> 43935