В длинном формате октеты длины состоят из начального октета и одного или нескольких октетов продолжения. Кодовое представление первого октета должно быть следующим:
бит 8 должен иметь значение «единица»;
биты с 7-го по 1-й являются кодовым представлением количества последующих октетов длины в виде двоичного целого числа без знака с бцтом 7 в качестве старшего бита;двоичное значение 11111111 не должно использоваться.
При мече ние. Это ограничение вводится в целях совместимости с реко- ' мендаїцией МКК'ТТ Х.409, а также для возможных последующих расширений.
Биты с 8-го по 1-й первого октета продолжения, за которыми «следуют биты с 8-го по 1-й второго октета продолжения, за которыми следуют в свою очередь биты с 8-го по 1-й каждого из следующих октетов продолжения, до последнего включительно должны •быть кодовым представлением количества октетов содержимого в виде двоичного целого числа без знака, с битом 8 первого последующего октета в качестве старшего бита;
Пример. L= 201 должно быть закодировано следующим образом: 10000001 11001001.
примечание. При использовании! длинного формата отправитель может :по своему выбору использовать большее количество октетов длины, чем необходимый минимум.
В случае неявного формата октетов длины они указывают на то, что конец октетов содержимого задается октетами признака конца содержимого (п. 6.5). В этом случае группа октетов длины состоит из единственного октета.
Бит 8 этого единственного октета должен быть установлен в единицу, а биты с 7 по 1 должны быть установлены в нуль.
Если используется этот формат длины, то присутствие октетов признака конца содержимого (п. 6.5), следующих за октетами содержимого, является обязательным.
Октеты содержимого
Октеты содержимого могут состоять из пустого множества октетов, одного или более октетов, в которых должно быть закодировано значение данных, в соответствии с описанием, приведенным в последующих разделах.
Примечание. Кодовое представление октетов содержимого зависит от типа значения данных и описывается в последующих разделах, приведенных в той же последовательности, в которой приведены определения типов в стандарте на АСН.1.
Октеты признака конца содержимого
Октеты признака конца содержимого должны присутствовать ® том случае, когда длина закодирована так, как описано в п. 6.3.4, в противном случае они должны отсутствовать.
Октеты признака конца содержимого должны состоять из двух октетов с нулевым значением.
Примечание. Октеты признака конца содержимого могут рассматриваться как простое кодовое представление значения с тегом универсального класса и нулевым номером тега, в котором отсутствуют октеты содержимого, то есть:
Конец содержимого Длина Содержимое
00 00 Отсутствует
КОДОВОЕ ПРЕДСТАВЛЕНИЕ БУЛЕВСКОГО ЗНАЧЕНИЯ
Кодовое представление булевского значения должно быть- простым кодовым представлением. Октеты содержимого включают единственный'октет.
Если булевское значение есть «ложь» («FALSE»), то этот октет должен иметь нулевое значение.
Если булевское значение есть «истина» («TRUE»), то этот октет должен иметь произвольное (по выбору отправителя) значение, отличное от нуля.
Пример. Значение «истина» булевского типа может быть закодировано следующим образом:
Булевский тип Длина Содержимое
01 01 FF
КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЦЕЛОЧИСЛЕННОГО ЗНАЧЕНИЯ
Кодовое представление целочисленного значения должно быть простым кодовым представлением. Группа октетов содержимого должна состоять из одного или более октетов.
Если октеты содержимого кодового представления целочисленного значения включают более одного октета, то биты первого октета и бит 8 второго октета должны удовлетворять следующим условиям:
они не должны все иметь значение «единица»;
они не должны все иметь значение «нуль».
Примечание. Эта правила гарантируют, что кодовое представление целочисленного типа будет состоять из наименьшего возможного количества октетов.
Октеты содержимого должны содержать двоичное число в дополнительном коде, которое равно кодируемому значению и образуется битами с 8-го по 1-й первого октета, за которыми следуют биты с 8-го по 1-й второго октета, за которыми следуют, в свою1 очередь, биты с 8-го по 1-й каждого последующего октета, до последнего октета содержимого включительно.
Примечание. Значение двоичного числа в дополнительном коде вычисляется следующим образом. Все биты в октетах содержимого нумеруются, Начиная с бита последнего октета, которому присваивается номер 0, и заканчивая: битом 8 первого октета. Каждому биту приписывается числовое значение 2 в степени N, где N — номер бита в описанной выше нумерации. Значение числа в дополнительном коде получается в результате суммирования числовых значений,, приписанных битам, установленным в единицу, за исключением бита 8- первого1 октета и последующего вычитания числового значения, приписанного биту S первого сктета, если он установлен в единицу.КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ <СТРОКА БИТОВ»
Кодовое представление значения «строка битов» может быть как простым, так и составным по выбору отправителя.
Примечание. При необходимости передать часть битовой строки до того, как вся строка станет доступной, используется составное кодовое представление.
Октеты содержимого простого кодового представления должны включать начальный октет, за которым следует нуль или более октетов продолжения.
Биты строки битов, начиная с первого бита и кончая замыкающим битом, располагаются по порядку в битах с 8-го по 1-й первого октета продолжения, затем в битах 8—1 второго октета продолжения, затем в битах 8—1 каждого из последующих октетов продолжения, вплоть до последнего октета продолжения, из которого используется столько битов, сколько нужно, начиная с бита
Начальный октет должен быть кодовым представлением, в виде двоичного целого числа без знака с битом 1 в качестве младшего бита, числа неиспользуемых битов в последнем октете продолжения. Это число должно заключаться в диапазоне от нуля до семи.
Если битовая строка не содержит ни одного бита, то в кодовом представлении отсутствуют октеты продолжения, а начальный октет должен иметь нулевое значение.
В случае составного кодового представления октеты содержимого должны включать некоторое количество (от нуля и более) полных кодовых представлений значений данных.
Примечание. Каждое из этих кодовых представлений включает октеты идентификатора, дайны и содержимого и может включать октеты признака конца содержимого, если оно само является составным.
Каждое из кодовых представлений, являющихся частью октетов содержимого, должно быть кодовым представлением значения типа «строка битов» («BIT STRING»).
Примечании е. В частности, все теги, закодированные в октетах содержимого относятся к универсальному классу м имеют номер 3.
Биты кодируемого значения «строка битов», начиная с первого бита по порядку вплоть до замыкающего бита, помещаются в биты с первого по замыкающий первого значения данных, закодированного в октетах содержимого, затем в биты с первого по замыкающий второго значения данных, закодированного в ок- +етах содержимого, затем в биты с первого по замыкающий каждого последующего, вплоть до последнего значения данных, закодированного в октетах содержимого.Количество битов, входящих в каждое значение данных, закодированное в октетах содержимого, за исключением последнего, должно быть кратно восьми.
Примечание. Значения данных, закодированных в октетах содержимого, <могут быть строкой битов нулевой длины.
При использовании составного кодового представления не должно придаваться никакого значения границе между значениями данных, закодированными в октетах содержимого.
Кодовое представление каждого из значений данных, закодированных в октетах содержимого, может быть либо простым, либо составным.
Примечание. Обычно кодовое представление каждого из значений данных бывает простым.
Пример. Значение /0A3B5F291CD'H типа «строка битов» (BIT STRING) может быть закодировано, как показано ниже. В этом примере кодовое представление строки битов — простое.
Строка битов Длина Содержимое
03 07 040A3B5F291CD0
Приведенное выше значение может быть закодировано другим способом, показанным ниже. В этом примере кодовое представление строки битов, составное.
Строка |
битов |
Длина |
Содержимое |
23 |
|
80 |
18 |
Строка |
битов |
Длина |
Содержимое |
03 |
|
03 |
000A3B |
03 |
|
05 |
045F291CD0 |
Признак |
конца содержимого |
Длина |
|
00 |
|
00 |
|
10. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «СТРОКА ОКТЕТОВ»
. Кодовое представление значения «строка октетов» может быть как простым, так и составным, по выбору отправителя.
Примечание. При необходимости передать чіаість строки октетов до того, как вся строка станет доступной, используется составное кодовое представление.
. Простое кодовое представление содержит нуль или более октетов, равных по значению октетам значения данных, следующих в том же порядке, в котором они присутствуют в значении данных, причем позиции старших битов каждого из октетов значения данных должны совпадать с позициями старших битов октетов содержимого.
. В случае составного кодового представления октеты содержимого должны включать некоторое количество (от нуля и более) полных кодовых представлений значений данных.
Примечание. Каждое из этих кодовых представлений включает октеты идентификатора, длины и содержимого и может включать октеты признака конца содержимого, если оно само является составным.
. Каждое из кодовых представлений, являющихся частью октетов содержимого, должно быть кодовым представлением значения типа «строка октетов» («OCTET STRING»).
Примечание. В частности, все ітеги, закодированные в октетах содержимого, относятся к универсальному классу и имеют номер 4.
. Октеты кодируемого значения «строка октетов», начиная с первого октета по порядку вплоть до замыкающего октета, помещаются в октеты с первого по замыкающий первого значения данных, закодированного в октетах содержимого, затем в октеты с первого по замыкающий второго значения данных, закодированного в октетах содержимого, затем в октеты с первого по замыкающий каждого последующего, вплоть до последнего, значения данных, закодированного в октетах содержимого.
Примечание. Значение данных, закодированное в октетах содержимого, может быть строкой октетов нулевой д лины.
. При использовании составного кодового представления не должно придаваться никакого значения границе между значениями данных, закодированными в октетах содержимого.
. Кодовое представление каждого из значений данных, закодированных в октетах содержимого, может быть либо простым, либо составным.
Примечание. Обычно кодовое представление каждого из значений данных бывает простым.
КОДОВОЕ ПРЕДСТАВЛЕНИЕ ВЫРОЖДЕННОГО ЗНАЧЕНИЯ
Кодовое представление вырожденного значения должно быть простым кодовым представлением.
Октеты содержимого не должны содержать ни одного октета.
Примечание. Октет длины имеет нулевое значение.
Пример. Вырожденное значение («NULL») вырожденного типа («NULL») кодируется следующим образом:
Вырожденное значение Длина
05 00
КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «ПОСЛЕДОВАТЕЛЬНОСТЬ»
Кодовое представление значения «последовательность» должно быть составным.
Группа октетов содержимого должна состоять из полных кодовых представлений значения данных, по одному из каждого типа, перечисленного в определении типа «последовательность» (в нотации АСН.1), в том же порядке, в котором типы, следовали в определении, за возможным исключением типов, отмеченных в определении ключевым словом «OPTIONAL» или ключевым словом «DEFAULT».
Кодовое представление значения данных, тип которого был отмечен ключевым словом «OPTIONAL» или «DEFAULT», может присутствовать в октетах содержимого, но необязательно.
Если оно присутствует, то оно должно входить в кодовое представление в том месте, которое соответствует вхождению соответствующего типа в определение типа «последовательность» в нотации АСН.1.
Пример. Значение {name «Smith», okTRUE} типа
SEQUENCE {name lA5String, ok BOOLEAN}
может быть закодировано следующим образом:
Длина |
Содержимое |
0А |
1 A5String |
Длина |
Содержимое |
05 |
«Smith» |
Длина |
Содержимое |
01 |
FF |