ИМЯ
- byte2char, char2byte - преобразование между символами и байтами
РЕЗЮМЕ
include "sys.m"; sys := load Sys Sys->PATH; byte2char: fn(buf: array of byte, n: int): (int, int, int); char2byte: fn(c: int, buf: array of byte, n: int): int;
ОПИСАНИЕ
- Byte2char конвертирует последовательность байт в один символ Unicode. Buf это массив байт и n это индекс первого байта для проверки в массиве. Функция возвращает тьюпл, скажем, (c, length, status), определяющий результат преобразования: c это результирующий символ Unicode, status имеет не нулевое значение если байты являются допустимой последовательностью UTF или нуль в противном случае, и length это количество байт участвовавших в преобразовании. Если входная последовательность недостаточно длинна для установления ее допустимости, byte2char расходует ноль байт; если входная последовательность не является допустимой, byte2char расходует один входной байт и генерирует символ ошибки (Sys->UTFerror, 16r80),который печатается в большинстве шрифтов как заключенный в прямоугольник знак вопроса.
- Char2byte выполняет противоположную byte2char функцию. Она преобразует Unicode символ c, в последовательность UTF байт, которая помещается в успешные байты в массив начиная с n-ой позиции buf[.IRn]. Длина наибольшей последовательности UTF для одиночного символа Unicode является Sys->UTFmax (3) байта. Если преобразование было успешным, char2byte возвращает количество байт помещенных в буфер. Если буфер слишком мал для хранения результата, char2byte возвращает ноль и оставляет массив без изменений.
ИСХОДНЫЙ ТЕКСТ
- /libinterp/runt.c
СМОТРИ ТАКЖЕ
- sys-intro(2), sys-utfbytes(2), utf(6)