|
|
Структура тега АСН.1.Кодовое представление тега должно состоять из четырех составных частей, следующих в порядке перечисления:
На рис.1. представлена структура кодового представления: а) явный формат длины тега
б) неявный формат длины тега, используется в случае невозможности задать длину сразу
Октеты идентификатора В октетах идентификатора должен быть закодирован тег АСН.1 того типа (класс и номер), к которому относится значение данных. Для тегов, имеющих номер от нуля до 30 включительно, октеты идентификатора представлены одним октетом, закодированным следующим образом (рис.2.):
а) биты 7 и 8 представляют класс тега (табл.3.); Табл.3.
б) бит 6 должен иметь значение “ноль”, если кодовое представление простое, и “единица”, если оно - составное; в) биты с 5 по 1 должны быть кодовым представлением номера тега в виде двоичного целого с битом 5 в качестве старшего бита.
Для тегов с номерами большими 30, идентификатор должен состоять из головного октета, за которым следуют один или более октетов продолжения. Кодовое представление головного октета должно быть следующим (см. рис.3.):
Рис.3.
а) биты 7 и 8 задают класс тега (табл.3.); б) бит 6 должен иметь значение “ноль”, если кодовое представление простое, и “единица”, если оно - составное; в) биты с 5 по 1 должны иметь кодовое представление 111112. Октеты продолжения являются кодовым представлением номера тега; они должны иметь следующий вид (рис.): а) бит 8 каждого октета, за исключением последнего октета идентификатора, должен быть установлен в единицу; б) биты с 7 по 1 первого октета продолжения , сцепленные с битами 7-1 второго октета продолжения , сцепленные, в свою очередь, с битами 7-1 каждого из октетов продолжения, до последнего включительно, должны быть кодовым представлением номера тега в виде двоичного целого числа без знака, с битом 7 первого октета продолжения в качестве старшего бита.; в) биты с 7 по 1 первого последующего октета не должны быть все установлены в ноль.
Рис.4.
Октеты длины Октеты длины могут быть представлены в явном или неявном формате. Явный формат используется, если кодовое представление простое. Неявный формат используется, если кодовое представление составное и недоступно сразу полностью. В остальных случаях формат определяется отправителем. При использовании явного формата октеты длины включат один октет - короткий формат ( когда количество октетов содержимого меньше или равно 127 ) , или несколько октетов - длинный формат ( когда количество октетов содержимого больше 127 ).В коротком формате бит 8 единственного октета установлен в ноль , а биты с 7 по 1 являются кодовым представлением количества октетов содержимого в виде двоичного целого числа без знака с битом 7 в качестве старшего разряда. Например, число 42 будет закодировано как 001010102 . В длинном формате октеты длины состоят из начального октета и одного или более октетов продолжения. Кодовое представление начального октета должно быть следующим: а) бит 8 должен быть установлен в единицу; б) биты с 7 по 1 являются кодовым представлением количества последующих октетов длины в виде двоичного целого числа без знака с битом 7 в качестве старшего разряда; в) двоичное значение 111111112 не должно использоваться. Биты с 8 по 1 первого октета продолжения , сцепленные с битами 8-1 второго октета продолжения , сцепленные, в свою очередь, с битами 8-1 каждого из октетов продолжения, до последнего включительно, должны быть кодовым представлением номера тега в виде двоичного целого числа без знака, с битом 8 первого октета продолжения в качестве старшего бита. Например число 342 будет закодировано как 100000102 000000012 010101102 (при использовании длинного формата отправитель может по своему выбору использовать большее количество октетов, чем необходимый минимум). В случае неявного формата октеты длины состоят из единственного октета 100000002 . При этом конец октетов содержимого задается двумя октетами признака конца содержимого, имеющими нулевое значение (000000002 000000002 ) . Тег также может быть простым или составным. Составной тег включает в свое информационное поле набор простых или составных тегов. Простой тег содержит конечную последовательность данных одного типа. |
|
|