Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 8825-2-2003 Информационная технология (ИТ). Правила кодирования АСН.1. Часть 2. Спецификация правил уплотненного кодирования (PER)

     10.9 Общие правила кодирования детерминанта длины


Примечания

1 Процедуры настоящего подраздела вызываются для некоторой части кодирования, когда необходима явная длина поля независимо от того, ограничен сверху счетчик длины (видимыми для PER ограничениями) или нет. Часть кодирования, к которой относится длина, может быть битовой строкой (со счетчиком длины в битах), строкой октетов (со счетчиком длины в октетах), символьной строкой известной кратности (со счетчиком длины в символах) или списком полей (со счетчиком длины в компонентах последовательности-из или множества-из).

2 В случае варианта ALIGNED, если счетчик длины ограничен верхней границей, которая меньше 64К, для длины используется кодирование ограниченного целого числа. Для достаточно маленьких диапазонов результатом является битовое поле, в противном случае неограниченная длина (обозначенная ) кодируется в выровненном по октету поле битов одним из трех способов (в порядке увеличения размера):

а) ( меньше 128) единственный октет, содержащий с равным нулю битом 8;

б) ( меньше 16К) два октета, содержащие с битом 8 первого октета, равным 1, и битом 7, равным нулю;

в) (большое ) единственный октет, содержащий счетчик с 8 и 7 битами, равными 1. Счетчик равен от 1 до 4, а длина указывает, какой фрагмент данных следует дальше (, умноженное на 16К элементов). За определенным значением фрагментом следует другая длина кодирования для оставшихся данных.

3 В случае варианта UNALIGNED, если счетчик длины ограничен верхней границей, которая меньше 64К, для кодирования длины в минимальном количестве битов, необходимых для представления диапазона, используется кодирование ограниченного целого числа. В противном случае неограниченная длина (обозначенная ) кодируется в битовое поле способом, описанным в примечании 2.



10.9.1 Процедуры настоящего подраздела не вызываются, если в соответствии со спецификациями последующих разделов значение детерминанта длины фиксировано определением типа (с видимыми для PER ограничениями), и это значение меньше 64К.

10.9.2 Процедуры настоящего подраздела вызываются в дополнение к списку полей, содержащему поля или списки полей, с предшествующим детерминантом длины , который определяет:

а) длину в октетах ассоциированного поля (единицами являются октеты), либо

б) длину в битах ассоциированного поля (единицами являются биты), либо

в) число компонентов, закодированных в ассоциированном списке полей (единицами являются компоненты множества-из или последовательности-из), либо

г) число символов в значении ассоциированного типа символьной строки известной кратности (единицами являются символы).

10.9.3 (Вариант ALIGNED) Процедуры для варианта ALIGNED специфицированы в 10.9.3.1-10.9.3.8.4. (Процедуры для варианта UNALIGNED специфицированы в 10.9.4.)

10.9.3.1 В результате анализа определения типа (установленного в последующих разделах) определяется, будет ли детерминант длины (целое число ):

а) обычно маленькой длиной с нижней границей ; либо

б) ограниченным целым числом с нижней границей и верхней границей , либо

в) полуограниченным целым числом с нижней границей или ограниченным целым числом с нижней границей и верхней границей

.

10.9.3.2 Подраздел, вызывающий процедуры настоящего подраздела, должен определить значения для нижней (равное нулю, если длина неограничена) и верхней границ длины, не устанавливается, если нет верхней границы, определимой по видимым для PER ограничениям.

10.9.3.3 Когда детерминант длины является ограниченным целым числом с , список полей будет добавлен к кодированию этого ограниченного целого числа для детерминанта длины, как определено в 10.5. Если не равно нулю, то за ним должно следовать ассоциированное поле или список полей, и процедура завершается. Если равно нулю, то к списку полей ничего не добавляется, и процедура завершается.

Примечания

1 Например:

А :: = Fоо (SIZE (3..6)) -- Длина кодируется в 2-битовом поле