ГОСТ Р ИСО/МЭК 8825-2-2003
2 Результатом отсутствия дополнения в случае п, равного нулю, является отсутствие заполнения до границы октета, когда эти процедуры вызываются для дополнения выровненного по октету битового поля нулевой длины, если иное не требуется 10.5.
10.9.3.4 Когда детерминант длины является обычно маленькой длиной и п < 64, к списку полей должно добавляться однобитовое поле с битом, установленным в 0, а значение п — 1 должно быть закодировано как неотрицательное двоичное целое в 6-битовом поле. За этим должно следовать ассоциированное поле, завершающее эти процедуры. Если п больше 64, то к списку полей должно добавляться однобитовое поле с битом, установленным в 1, за которым следует кодирование п как неограниченная детерминанта длины, с последующим ассоциированным полем, согласно процедурам 10.9.3.5—10.9.3.8.4.
Примечание — Обычно маленькие длины используются только для указания длины битовых отображений, которые являются префиксами значений расширяющих дополнений типов «множество» или «последовательность».
10.9.3.5 В противном случае (неограниченная или большая ub) п кодируется и добавляется к списку полей с последующими ассоциированными полями, как указано ниже.
Примечание — Нижняя граница lb не влияет на кодирования длины, определенные в 10.9.3.6— 10.9.3.8.4.
10.9.3.6 Если п < 127, то п должно закодироваться как неотрицательное двоичное целое (используя процедуры 10.3) в битах с 7 (старший значащий) до 1 (младший значащий) единственного октета, а бит 8 должен быть установлен в нуль. Результат добавляется к списку полей как выровненное по октету битовое поле со следующим ассоциированным полем или списком полей, что завершает эти процедуры.
Примечание — Например, если следующее значение А имеет длину 4 символа, а значение В имеет длину 4 позиции:
А :: = IA5String
В :: = Foo (SIZE (4..123456))
то оба значения кодируются с длиной, занимающей один октет, и с первым битом, установленным в 0, для указания, что значение длины меньше или равно 127:
4 символа/позиции
Значение
10.9.3.7 Если п > 127, но меньше 16К, тогда п должно быть закодировано как неотрицательное двоичное целое (используя процедуры 10.3) с бита 6 первого октета (старший значащий) до бита 1 второго октета (младший значащий) выровненного по октету битового поля длиной 2 октета с битом 8 первого октета, установленным в 1, и битом 7 первого октета, установленным в нуль. Результат должен быть добавлен к списку полей с последующим ассоциированным полем или списком полей, что завершает эти процедуры.
Примечание — Если в примере 10.9.3.6 значение А имеет длину 130 символов, а значение В имеет длину 130 позиций, то оба значения кодируются с компонентом длины, занимающим 2 октета, с первыми двумя битами, установленными в 10 для указания значения длины, большей 127, но меньшей 16К:
10 000000 10000010
Значение
10.9.3.8 Если п > 16К, то к списку полей должен быть добавлен единственный октет выровненного по октету битового поля с битами 8 и 7, установленными в 1, и с битами с 6 по 1, кодирующими значения 1, 2, 3 или 4 как неотрицательное двоичное целое (используя процедуры 10.8). За этим единственным октетом должна следовать часть ассоциированного поля или списка полей, как установлено ниже.
Примечание — Значение битов с 6 по 1 ограничено значениями 1—4 (вместо теоретических пределов 0—63) для того, чтобы ограничить число элементов, о которых должно быть известно реализации, более управляемым количеством (64К вместо 1024К).
15