ГОСТ Р ИСО/МЭК 8825-1-2003
8.6 Кодирование значения «битовая строка»
8.6.1 Кодирование значения «битовая строка» должно быть простым или составным, по
усмотрению отправителя.
П р имс ч а ни с —Если необходимо передать часть битовой строки до гою, как она вся станет доступ
ной. то используется составное кодирование.
8.6.2 Октеты содержимого для простого кодирования должны содержать начальный октет, с
последующим нулем, одним или несколькими октетами продолжения.
8.6.2.1 Биты в битовой строке, с первого до последнего, должны размещаться в битах с 8 до 1
первого октета продолжения, далее —в битах с 8 до I второго октета продолжения, затем —в битах
с 8 до I каждого следующего октета и завершаться тем количеством битов, которое необходимо
в конечном октете продолжения, начиная с бита 8.
Примечание —Термины «первый бит» и «завершающий бит» определены в ГОСТ Р ИСО/МЭК 8824-1.
8.6.2.2 Начальный октет должен кодировать, в виде двоичного целого числа без знака с битом I
в качестве наименьшего значащего бита, число неиспользованных битов в конечном октете
продолжения. Число должно находиться в диапазоне от нуля до семи.
8.6.2.3 Если битовая сгрока пуста, то не должно быть никаких октетои продолжения, а
начальный октет должен быть нулевым.
8.6.2.4 При применении подраздела 21.7 ГОСТ Р ИСО/МЭК 8824-1 кодировшнки/декоднров-
щикн BER м о т добавлять или убирать завершающие нулевые биты значения.
П р и мс ч а ннс —Если значение битовой строки нс имеет единичных битов, то кодировщик (но
усмотрению отправителя) может кодировать значение с начальным октетом, равным 0, или может кодировать
его как битовую строку с одним или несколькими нулевыми битами после начального октета.
8.6.3 Октеты содержимого для составного кодирования должны состоять из нуля, одного или
нескольких вложенных кодирований.
Приме ча ние —Каждое такое кодирование включает в себя октеты идентификатора, длины, содер
жимого и может включать октеты конец-содержимого, если оно является составным.
8.6.4 Для кодирования значения битовой строки таким способом это значение должно быть
сегментировано. Каждый сегмент должен состоять из ряда последовательных битов значения и
должен, возможно, за исключением последнего, содержать число битов, кратное восьми. Каждый
бит в общем значении должен присутствовать ровно в одном сегменте, а размещение границ
сегментов значения не имеет.
Приме ча ние —Сегмент может иметь нулевой размер, то есть нс содержать биты.
8.6.4.1 Каждое кодирование в октетах содержимого должно представлять сегмент общей
битовой строки, кодовое представление которой является результатом рекурсивного применения
настоящего раздела. При этом применении каждый сегмент рассматривается как значение битовой
строки. Кодовые представления сегментов должны появляться в октетах содержимого в том порядке,
в каком их биты появляются в общем значении.
Приме ча ния
1 Как следствие этой рекурсии, каждое кодирование в октетах содержимого само можег быть простым
или составным. Однако обычно такие кодирования яатяются простыми.
2 В частности, теги в октетах содержимого всегда универсального класса номер 3.
8.6.4.2 Пример. Если тип BIT SI RING, то его значение ’0A3B5F291CDH может быть зако
дировано так, как показано ниже. В данном примере BitString представлена как примитив:
BitStringД.| ииаСодержимое
___________________________________________
___________________________________________
040АЗB5F291С D0,,.
Это же значение может быть закодировано так. как показано ниже. Вданном примере BitString
представлена как конструкция:
BitStringД линаС одерж им ое
* ° .о
B itS trin g
Д л и н аС о д е р ж и м о е
,
ЕО СД л и н а
___________________________ ___________
Ши
____________
0 3 .6
<
(КЮ АЗВ|6
0 5 .6
0 4 5 F 2 9 1 C D 0 ,*
9