ГОСТ Р ИСО/МЭК 8825-2-2003
16.5 Если строка октетов ограничена нулевой длиной (ub = 0), то она не должна кодироваться
(нет дополнений к списку полей), и процедуры этого раздела завершаются.
16.6 Если все значения строки октетов ограничены одной длиной (ub = lb) и эта длина меньше
или равна двум октетам, то сгрока октетов должна быть помещена в битовое поле с числом битов,
равным кратной восьми ограниченной длине ub, которое должно быть добавлено к списку
полей без детерминанта длины, и процедуры этого раздела завершаются.
16.7 Если все значения строки октетов ограничены одной длиной (ub = lb) и эта длина больше
двух октетов, но меньше 64К. то строка октетов должна быть помешена в выровненное по октету
битовое поле с ограниченной длиной ub октетов, которое должно быть добавлено к списку полей
без детерминанта длины, и процедуры этого раздела завершаются.
16.8 Если 16.5—16.7 не применимы, то строка октетов должна быть помещена в выровненное
по октету поле битов длиной и октетов, и должны быть вызваны процедуры 10.9 для добавления
этих п октетов выровненного по октету битового поля к списку полей с предшествующим детерми
нантом длины, равным п октетам, в виде ограниченного целого числа, если ub установлена, или в
виде полуограниченного целого числа, если ub не установлена (1Ь устанаативается так, как опреде
лено выше).
П р и м е ч а н и е — Процедуры фрагментация могут применяться после 16К. 32К. 48К или 64К октетов.
17 Кодирование вырожденного типа
П р и м е ч а н и е —Вырожденный тип является, по существу, держателем места и имеет практическое
значением только как компонент выбора или факультативный компонент множества иди последовательности.
Идентификация вырожденного типа в выборе иди сто присутствие в качестве факультативного элемента
осуществляется в настоящих правилах кодирования без необходимоези иметь октеты, представляющие null.
Следовательно, значения null никогда нс вносят вклад в октеты кодирования.
Не должно быть дополнения к списку полей для вырожденного значения.
18 Кодирование типа «последовательность*
П р и м е ч а н и е —Тин «последовательность» начинается с преамбулы, которая является битовой кар
той. Если тип «последовательность» не имеет маркера расширения, то в битовой карте, закодированной как
битовое иоле фиксированной длины, записано только наличие или отсутствие в типе заданных по умолчанию
и факультативных компонентов. Ести тип «последовательность» имеет маркер расширении, то битовая карта
следует за единственных! битом, который сообщает, присутствуют ли фактически в кодировании значения
расширяющих дополнений. Преамбула кодируется без какого-либо детерминанта дзины при условии, что она
имеет длину меньше 64К битов, в противном случае детерминант длины кодируется для получения фрагмен
тации. За преамбулой следуют поля, которые по порядку кодируют все компоненты. Если есть расширяющие
дополнения, то непосредственно перед первым изних стоит кодирование(как полуограниченного целого
числа) счетчика количества расширяющих дополнений в кодируемом типе, за которым следует битовая
картадлиной, равной этому счетчику, в которой записано наличие или отсутствие значений каждого
расширяющего допол нения. За этим следуют кодирования расширяющих дополнений так. как если бы они были
значениями полей открытого типа.
18.1 Если тип «последовательность* имеет маркер расширения, то сначала к списку полей в
поле битов длины должен быть добавлен один бит. Он должен быть единицей, если в данном
кодировании присутствуют значения расширяющих дополнений, и нулем — в противном случае.
(Далее по тексту этот бит называется «бит расширения»). Если маркер расширения отсутствует,
то бит расширения не добавляется.
18.2 Если тип «последовательность» имеет п компонентов в корне расширения, которые
помечены как OPTIONAL или DEFAULT, то для добавления к списку полей должно быть создано
одно битовое поле с п битами. Биты этого поля, взятые по порядку, должны кодировать наличие
или отсутствие кодирования каждого факультативного или заданного по умолчанию компонента в
типе «последовательность*. Значение бита 1 колирует присутствие компонента, а значение бита 0 —
отсутствие. Головной бит в преамбуле должен кодировать наличие или отсутствие первого факуль
тативного или заданного по умолчанию компонента, а завершающий бит должен кодировать наличие
или отсутствие последнего факультативного или заданного по умолчанию компонента.
18.3 Если п < 64К, то битовое поле должно быть добавлено к списку полей. Если п t 64К, то
20