ГОСТ Р ИСО/МЭК 8825-2-2003
от 32 до 122. Для IA5String и VisibleString присутствуют все значения диапазона, а для NumericString и PrintableString используются не все значения диапазона).
26.5.4 Наименьшее значение в диапазоне для набора символов допустимого алфавита обозначим lb, а наибольшее — ub. Тогда кодирование символа в b битах является неотрицательным двоичным целым кодированием значения v, идентифицированного следующим образом;
а) если ub < 2Ь — 1, то v — указанное выше значение; в противном случае
б) символы размещаются в каноническом порядке, определенном в ГОСТ Р ИСО/МЭК 8824-1, раздел 38. Первому из них присваивается нулевое значение, а следующему в каноническом порядке присваивается значение на единицу больше значения, присвоенного предшествующему символу в каноническом порядке. Это и будут значения v.
Примечание — Перечисление а) никогда не применяется к ограниченному или неограниченному символу NumericString, который всегда кодируется в четыре бита или менее, используя б).
26.5.5 Кодирование всей символьной строки будет получено неотрицательным двоичным целым кодированием каждого символа (используя соответствующее значение v) в b битах, которые должны быть сцеплены для формирования битового поля, кратного b битам.
26.5.6 Если aub равно alb и меньше 64К, то битовое поле должно быть добавлено к списку полей как выровненное, если aub более чем в 16 раз превышает b, или, в противном случае, как невыровненное по октету. Этим завершаются процедуры настоящего подраздела.
26.5.7 Если aub не равно alb или больше или равно 64К, то должны быть применены процедуры 10.9 для добавления детерминанта длины с п в качестве счетчика символов в строке, с нижней границей детерминанта длины alb и верхней границей aub. Затем битовое поле должно быть добавлено к списку полей как выровненное, если aub более чем в 16 раз превышает b, или, в противном случае, как невыровненное по октету. Этим завершаются процедуры настоящего подраздела.
26.6 Настоящий подраздел применяется к символьным строкам, которые не являются символьными строками известной кратности. В этом случае ограничения являются невидимыми для PER, а тип не может быть расширяемым для кодирования PER.
26.6.1 Используемый ниже термин «базовое кодирование» означает ОПК для BASIC-PER и CANONICAL-BER для CANONICAL-PER.
26.6.2 К символьной строке должно быть применено «базовое кодирование», дающее поле из п октетов.
26.6.3 Должны быть применены процедуры 10.9 для добавления неограниченного детерминанта длины с равным п счетчиком в октетах, а поле из п октетов должно быть добавлено как выровненное по октету битовое поле, и процедуры этого раздела завершаются.
27 Кодирование неограниченного типа символьных строк
27.1 Установлены два способа, которыми может быть закодирован неограниченный тип символьных строк:
а) альтернатива «syntaxes» неограниченного типа символьных строк ограничена видимым для PER внутренним ограничением типа единственным значением или «identification» ограничен видимым для PER внутренним ограничением типа альтернативой «fixed»; в этом случае должно быть закодировано только значение «string-value»; этот случай называется «предопределенным»;
б) внутреннее ограничение типа не используется для ограничения альтернативы «syntaxes» единственным значением или «identification» — альтернативной «fixed»; в таком случае должны быть закодированы как «identification», так и «string-value»; этот случай называется «общим».
27.2 В «предопределенном» случае кодированием значения типа CHARACTER STRING должно быть кодирование PER значения типа OCTET STRING. Значение OCTET STRING должно быть октетами, образующими полное кодирование значения символьной строки, указанной в ГОСТ Р ИСО/МЭК 8824-1, 39.3а.
27.3 В общем случае кодированием значения типа CHARACTER STRING должно быть кодирование PER типа, определенного в ГОСТ Р ИСО/МЭК 8824-1, 39.5, с исключенным элементом «descriptor» (а именно не должно быть битового отображения «OPTIONAL» в заголовке кодирования SEQUENCE). Значение «string-value» OCTET STRING должно быть октетами, образующими полное кодирование единственного значения данных, указанного в ГОСТ Р ИСО/МЭК 8824-1, 39.3а.
27