ГОСТ Р ИСО/МЭК 8825-1-2003
8.1.3.4 В короткой форме октеты длины должны состоять из одного октета, в котором бит 8 является нулевым, а биты с 7 по 1 кодируют число октетов содержимого (которое может быть нулевым) как двоичное целое число без знака с битом 7 в качестве старшего значащего бита.
Пример
L= 38 может быть закодирована как 001001102.
8.1.3.5 В длинной форме октеты длины должны состоять из начального октета и одного или нескольких последующих октетов. Начальный октет должен быть закодирован следующим образом:
а) 8 бит должен быть равен единице;
б) биты с 7 по 1 должны кодировать число последующих октетов длины как двоичное целое число без знака с битом 7 в качестве старшего значащего бита;
в) значение 111111112 не должно использоваться.
Примечание 1 — Это ограничение введено для возможного последующего расширения.
Биты с 8 по 1 первого октета продолжения с последующими битами с 8 по 1 второго октета продолжения, с последующими битами с 8 по 1 каждого следующего октета, включая последний октет продолжения, должны быть кодированием двоичного целого числа без знака, равного числу октетов содержимого, с битом 8 первого октета продолжения в качестве старшего значащего бита.
Пример
L = 201 может быть закодирована как:
100000012
110010012
Примечание 2 — В длинной форме отправитель может выбирать, использовать ли октетов длины больше, чем минимально необходимо.
8.1.3.6 Для неопределенной формы октеты длины указывают, что октеты содержимого заканчиваются октетами конец-содержимого (см. 8.1.5) и должны содержать единственный октет.
8.1.3.6.1 Единственный октет должен иметь 8 бит, равный единице, и биты с 7 по 1, равные нулю.
8.1.3.6.2 Если используется неопределенная форма длины, то октеты конец-содержимого (см. 8.1.5) должны присутствовать в кодировании после октетов содержимого.
8.1.4 Октеты содержимого
Октеты содержимого должны состоять из нуля, одного или нескольких октетов и кодировать значение данных так, как определено в последующих разделах.
Примечание — Октеты содержимого зависят от типа значения данных; последующие разделы расположены в том же порядке, что и определения типов в ACH.1.
8.1.5 Октеты конец-содержимого
Октеты конец-содержимого должны присутствовать, если длина закодирована так, как определено в 8.1.3.6, в противном случае они присутствовать не должны.
Октеты конец-содержимого должны состоять из двух нулевых октетов.
Примечание — Октеты конец-содержимого могут рассматриваться как кодирование значения с тегом универсального класса, форма которого является простой, номер тега — нулевой, а содержимое отсутствует. Таким образом:
|
Конец-содержимого |
Длина |
Содержимое |
|
_™16_ |
0016 |
Отсутствует |
8.2 Кодирование булевского значения
8.2.1 Кодирование булевского значения должно быть простым. Октеты содержимого должны состоять из одного октета.
8.2.2 Если булевское значение есть FALSE («ложь»), то октет должен быть нулем. Если булевское значение TRUE («истина»), то октет должен иметь любое ненулевое значение по выбору отправителя.
П р и м е р — Если тип BOOLEAN, то значение TRUE может быть закодировано как:
|
Булевский тип |
Длина |
Содержимое |
|
_01б_ |
_01б_ |
__ |
6