ГОСТ Р ИСО/МЭК 8825-2-2003
выражения любого перечисления. В присутствии маркера расширения перечислимый тип колируется как
обычно маленькое неотрицательное целое число, если значение не находится в корне расширения.
13.1 Перечисления в корне должны быть отсортированы в возрастающем порядке их перечис
лимых значений, а затем им должен быть присвоен индекс перечисления, начинающийся с нуля
для первого с шагом единица до последнего перечисления вотсортированном списке. Расширяющим
дополнениям (которые всегда определяются в возрастающем порядке) должен быть присвоен индекс
перечисления, начинающийся с нуля для первого с шагом единица до последнего перечисления в
расширяющих дополнениях.
П р и м е ч а н и е — ГОСТ Р ИСО/МЭК 8824-1 требует, чтобы каждое последующее расширяющее до
полнение имело значение перечисления большее, чем последнее.
13.2 Если в определении перечислимого типа отсутствует маркер расширения, то должен быть
закодирован индекс перечисления. Его кодирование должно быть таким, как если бы это было
значение ограниченного целочисленного типа, для которого нет маркера расширения, с равной 0
нижней границей, а верхняя граница равна самому большому индексу перечисления, ассоцииро
ванному с типом, и эта процедура завершается.
13.3 Если маркер расширения присутствует, то к списку полей в битовом поле длины должен
бытьдобавлен один бит. Он должен быть равен I. если значение, которое должно быть закодировано,
не находится в корне расширения, и нулю — в противном случае. В первом случае дополнительные
перечисления должны быть отсортированы в соответствии с 13.1, а значение должно быть добавлено к
списку полей как обычно маленькое неотрицательное целое число, значением которого является
индекс перечисления дополнительного перечисления при lb, равной 0, и эта процедура завершается. Во
втором случае значение должно быть закодировано так, как если бы маркер расширения
отсутствовал, как определено в 13.2.
При ме ча ние —Нет видимых для PER ограничений, которые могут применяться к перечислимому
типу.
14 Кодирование действительного типа
П р и м с ча и ис —Для действительною типа используют октеты содержимого CER/DER с предшеству
ющим детерминантом длины, который на практике будет одним октетом.
14.1 Если основанием абстрактного значения является 10, то основанием закодированного
значения должно быть 10, а если основанием абстрактного значения является 2, то основанием
закодированного значения должно быть 2.
14.2 Должно использоваться кодирование для REAL, определенное для правил канонического
и различающего кодирования в ГОСТ Р ИСО/МЭК 8825-1, приводящее к выровненному по октету
битовому полю, которые являются октетами содержимого кодирования CER/DER.
Содержимое этого кодирования состоит из п октетов и размещается в выровненном по октету поле
из я октетов. Для добавления этого выровненного по октету битового поля из я октетов к
списку палей с предшествующим неограниченным детерминантом длины, равным я, должны
применяться проце дуры 10.9.
15 Кодирование типа «битовая строка»
Прн ме ч аи ие —Битовые строки с ограниченной длиной, меньшей или равной двум октетам, не
приводят к выравниванию по октету. Большие битовые строки выравниваются по октету. Если длина фикси
рована ограничениями и верхняя граница меньше 64К. го явное кодирование длины отсутствует, в противном
случае включается кодирование длины, которое может иметь любую из форм, установленную ранее для
кодирования длины, включая фрагментацию для больших битовых строк.
15.1 Видимые для PER ограничения могут относиться только к длине битовой строки bitstring..
15.2 Когда нет видимого для PER ограничения и применяется ГОСТ Р ИСО/МЭК 8824-1,
21.7, значение должно быть закодировано без хвостовых битов 0 (означает, что значение без равных
1 битов всегда кодируется как пустая битовая строка).
15.3 Когда есть видимое для PER ограничение и применяется ГОСТ Р ИСО/МЭК 8824-1, 21.7
(т. е. тип «битовая строка* определяется с конструкцией «NamedBitList*), значение должно быть
18