ГОСТ Р ИСО/МЭК 8825-2-2003
закодировано с добавлением или удалением хвостовых битов 0, необходимым для обеспечения того,
чтобы размер переданного значения являлся наименьшим, способным передать это значение, и
соответствовал ограничению эффективного размера.
15.4 Обозначим максимальное число битов в битовой строке (с учетом видимых для PER
ограничений на длину) ub, а минимальное число битов — lb. Если не существует конечного макси
мума, то говорят, что ub не установлена. Если не существует ограничений на минимум, тогда 1Ь
имеет нулевое значение. Фактическую длину кодируемого значения битовой строки обозначим п.
15.5 Если в спецификации ограничения размера типа «битовая строка» присутствует маркер
расширения, то к списку полей в битовом поле длины должен быть добавлен один бит. Он должен
быть равен I, если длина этого кодирования не находится в пределах диапазона корня расширения,
и нулю — в противном случае. В первом случае должны быть выполнены процедуры 15.10 для
добавления длины как полуограниченного целого числа к списку полей с последующим значением
битовой строки. Во втором случае длина и значение должны быть закодированы, как будто маркер
расширения отсутствует.
15.6 Если в спецификации ограничения типа «битовая строка* отсутствует маркер расширения,
то применяются процедуры 15.7—15.10.
15.7 Если битовая строка ограничена нулевой длиной (ub = 0). то она не должна кодироваться
(нет дополнений к списку полей), и процедуры этого раздела завершаются.
15.8 Если все значения битовой строки ограничены одной длиной (ub = lb) и эта длина меньше
или равна 16 битов, то битовая строка должна быть помещена в битовое поле ограниченной длины
ub. которое должно быть добавлено к списку палей без детерминанта длины, и процедуры этого
раздела завершаются.
15.9 Если все значения битовой строки ограничены одной длиной (ub = lb) и эта длина больше
16 битов, по меньше 64К битов, то битовая строка должна быть помешена в выровненное по октету
битовое пале длиной ub (которая не обязательно кратна восьми битам) и добавлена к списку
полей без детерминанта длины, и процедуры этого раздела завершаются.
15.10 Если 15.7—15.9 неприменимы, то битовая строка должна быть помешена в выровненное
по октету битовое поле длиной п битов и должны быть выполнены процедуры 10.9 для добавления
этих п битов выровненного по октету поля ксписку полей с предшествующим детерминантом длины,
равным п битам, в виде ограниченного целого числа, если ub меньше 64К, или полуограниченного
целого числа, если ub больше этого значения или не установлена. 1Ь устанавливается так, как
определено выше.
Пр и ме ч а н и е —Фрагментация применяется для неограниченных или больших ub после 16К. 32К.
48К или 64К. битов.
16 Кодирование типа «строка октетов»
П р и м е ч а н и е —Строка октетов фиксированной длины, меньшей или равной двум октетам, не
выравнивается но октету. Все другие строки октетов выравниваются по отлету. Строки октетов фиксированной
длины кодируются без октетов длины, если они короче 64К. Для неограниченных строк октетов длина
кодируется явно (в случае необходимости, с фрагментацией).
16.1 Видимые для PER ограничения могут относится только к длине строки октетов.
16.2 Обозначим максимальное количество октетов в строке октетов (с учетом видимых для
PER ограничений на длину) ub. а минимальное число октетов — 1Ь. Если не существует конечного
максимума, то говорят, что ub не установлена. Если не существует ограничения на минимум, то
1Ь имеет нулевое значение. Фактическую длину кодируемого значения строки октетов обозначим
п (октетов).
16.3 Если есть видимое для PER ограничение размера и в нем присутствует маркер расшире
ния, то к списку полей в поле битов длины должен быть добавлен один бит. Он должен быть равен 1,
если длина этого кодирования не находится в пределах диапазона корня расширения, и нулю —
в противном случае. В первом случае должны быть выполнены процедуры 16.8 дтя добавления
к списку полей длины в виде полуограниченного целого числа с последующим значением
строки октетов. Во втором случае длина и значение должны быть закодированы гак, как будто
маркер расширения отсутствует.
16.4 Если в спецификации ограничения типа «строка октетов» отсутствует маркер расширения,
то применяются 16.5—16.8.
19