Примечания
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 Например: