Последовательность
30
16
Булевский тип
01
КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ
«ПОСЛЕДОВАТЕЛЬНОСТЬ ИЗ»
Кодовое представление значения «последовательность из» должно быть составным.
Группа октетов содержимого должна состоять из полных кодовых представлений значений данных типа, приведенного в определении типа «последовательность из» в нотации АСН.1.
Порядок следования кодовых представлений значений данных должен совпадать с порядком следования значений данных в кодируемом значении «последовательность из».
КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «МНОЖЕСТВО»
Кодовое представление значения «множество» должно быть составным.
Группа октетов содержимого должна состоять из полных кодовых представлений значений данных, по одному из каждого типа, перечисленного в определении типа «множество» в нотации АСН.1, в порядке, определяемом отправителем, за возможным исключением типов, отмеченных в определении ключевым словом «OPTIONAL» или ключевым словом «DEFAULT».
Кодовое представление значения данных, тип которого был отмечен ключевым словом «OPTIONAL» или «DEFAULT», может присутствовать в октетах содержимого, но необязательно.
Примечание. Порядок следования значений данных в значении «множество» несуществен и не накладывает никаких ограничений на их порядок следования при передаче.
КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «МНОЖЕСТВО ИЗ»
Кодовое представление значения «множество из» должно быть составным.
Требования те же, что и.в п. 13.2.
Порядок следования значений данных не требуется сохранять при кодировании и последующем декодировании.
КОДОВОЕ ПРЕДСТАВЛЕНИЕ ВЫБОРОЧНОГО ЗНАЧЕНИЯ
Кодовое представление значения выборочного типа должно быть тем же, что и кодовое представление значения выбранного типа.
Примечания:
Ju Кодовое представление может быть простым или составным; это зависит от выбранного типа.
Тег, используемый в октетах идентификатора, является тегом выбранного типа, в соответствии с определением выборочного типа, в нотация АСН.1.
КОДОВОЕ ПРЕДСТАВЛЕНИЕ СЕЛЕКТИВНОГО ЗНАЧЕНИЯ
Кодовое представление значения селективного типа должно быть тем же, что и кодовое, представление значения селектируемого типа.
Примечание. Кодовое представление может быть простым или составным, что зависит ат селектируемого типа.
КОДОВОЕ ПРЕДСТАВЛЕНИЕ ТЕГИРОВАННОГО ЗНАЧЕНИЯ
Кодовое представление тегированного значения получается из полного кодового представления соответствующего значения данных того «типа», который задан в обозначении «тегированный тип» (называемого исходным кодовым представлением) способом, описанным в пп. 18.2 и 18.3.
Если в определении тегированного типа не использовалось ключевое слово «IMPLICIT», то кодовое представление значения должно быть составным и группа октетов содержимого должна совпадать с полным исходным кодовым представлением.
Если при определении типа использовалось ключевое слово «IMPLICIT», то должны быть выполнены следующие требования:
'кодовое представление допжно-быть составным, :если -исходное кодовое представление‘составное;
труппа октетов содержимого должна ‘ совпадать с‘группой октетов содержимого исходного кодового представления.
Пример. Ниже приводятся кодовые представления значения
«Jones» для следующих типов АСНЛ:
Туре! : : = Visibl£String
Туре2 : : = [APPLICATION Зі] IMPLICIT Туpeil
ТуреЗ : : = [2і] Туре2
Туре4 : : = [APPLICATION 7]‘IMPLICIT ТуреЗ
Туреб : : = [2] IMPLICIT Турё2
Эти кодовые представления следующие:
для Туре1!:
VisfbleS'tring Длина Содержимое
1А 05 4A6F6E6573 ..
для Туре2:
[APPLICATION 3] Длина Содержимое
25
43 |
5 |
4A6F6E673 |
для ТуреЗ: [2] Длина Содержимое |
|
|
А2 07 [APPLICATION 3] |
Длина |
Содержимое |
43 |
05 |
4A6F6E65 |
для Туре4: [APPLICATION 7] |
Длина |
Содержимое |
67 |
07 |
|
[APPLICATION 7] |
Длина |
Содержимое |
43 |
05 |
4A6F6E6573 |
для Туре5: [2] |
Длина |
Содержимое |
82 |
05 |
4A6F6E6573 |
19. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ ПРОИЗВОЛЬНОГО ТИПА
Кодовое представление значения произвольного («ANY») типй должно быть полным кодовым представлением, определяемым настоящим стандартом для того типа, к которому относится кодируемое значение.
КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «ИДЕНТИФИКАТОР
ОБЪЕКТА»
Кодовое представление значения «идентификатор объекта» должно быть простым кодовым представлением.
Октеты содержимого должны быть (упорядоченной) по-’
следовательностью следующих друг за другом кодовых представлений субидентификаторов (пи. 20.3 и 20.4).
Каждый субидентификатор представляется последовательностью одного или более октетов. Бит 8 каждого октета указывает, является ли этот октет, последним в последовательности: бит 8 последнего октета должен иметь значение «нуль», а бит 8 каждого предшествующего октета — значение «единица». Битами 7—1 октетов этой последовательности кодируется субидентификатор. Эти группы битов, последовательно соединенные друг с другом, следует рассматривать как двоичное число без знака, старшим битом которого является бит 7 первого октета, а младшим битом — бит 1 последнего октета. Субидентификатор должен быть закодирован с помощью наименьшего возможного количества октетов; это означает, что головной октет субидентификатора не должен иметь шестнадцатеричное значение 80.
Количество субидентификаторов (N) должно быть на единицу меньше количества компонентов идентификатора объекта в кодируемом значении «идентификатор объекта».
Числовое значение первого субидентификатора вычисляется. по двум первым значениям компонентов кодируемого значения «идентификатор объекта» по формуле
(ХХ40)+У,
где X — значение первого компонента идентификатора объекта, У — значение второго компонента идентификатора объекта.
Примечание. Это «упакованное» представление двух первых компонентов идентификатора объекта возможно в силу того, что выделено лишь три значения для ребер, выходящих из корневой вершины, и не более 39 последующих значений — для вершин, соответствующих Х — 0 и.Х=1.
Числовое значение і-го субидентификатора (при 2<=!< <=N) совпадает с числовым значением (і-Н)-го компонента идентификатора объекта.
Пример. Значение типа OBJECT IDENTIFIER {joint-iso-ccitt 100 3}, которое в другой ф'орме записывается в виде {2 100 3),
имеет первый субидентификатор, равный 180, и второй субидентификатор, равный 3. Получаемое в результате кодовое представление имеет вид:
OBJECT IDENTIFIER Длина Содержимое 06 03 813403
КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЙ ТИПОВ «СТРОКА ЗНАКОВ»
Значение данных рассматриваемого типа является строкой знаков того знакового набора, который был задан при определении типа с помощью нотации АСН.1.
Каждое значение данных кодируется независимо от-других значений данных того же типа.
Каждый тип «строка знаков» кодируется так, как если бы он был объявлен как [UNIVERSAL х] IMPLICIT OCTET STRING, где х — номер тега универсального класса, присвоенный данному типу «строка знаков» в настоящем стандарте. Значение этой строки октетов (OCTET STRING) определяется в пп. 21.4 и 21.5.
Если рассматриваемый тип «строка знаков» определен в настоящем стандарте ссылкой на таблицу, в которой перечислены входящие в этот тип знаки (типы Numeric'String и PrintableString), то значение вышеупомянутой строки октетов для кодируемого значения «строка знаков» формируется так же, как для такого же значения типа Visible'String, в соответствии с п. 21.5.
Рассматриваемая строка октетов должна содержать октеты, определенные в настоящем стандарте для кодовых представлений в 8-битной операционной среде с использованием Esc-после- довательности и знаковых кодов, зарегистрированных в соответствии с настоящим стандартом.
Esc-последовательность может использоваться только в том случае, если она задается одним из регистрационных номеров, использовавшихся для определения данного типа «строка знаков» в настоящем стандарте.
Предполагается, что в начале каждой строки задаются и вызываются по терминологии настоящего стандарта регистрационные номера категорий GO и/или СО, и/или С1. Эти регистрационные номера заданы для каждого типа в табл. 2, вместе с соответствующими Esc-последовательностями, использование которых подразумевается.
Кодовые представления некоторых типов «строка знаков» не могут содержать явные Esc-последовательности, тогда как в других случаях любая Esc-последовательность, разрешенная в п. 21.5.1, может присутствовать в любом месте, в том числе в начале кодового представления. В табл. 2 указаны типы, для которых разрешается использование явных Esc-последовательностей.
Таблица 2
Использование Esc-последовательностей
Тип |
Прздполага- емый кодовый набор ОО (рс гистраци- онный номер) |
Предполагаемый коювый набор СО и С1 (регистра циояный номер) |
Предполагаемая Esc-последоватєль- ность и перевод регистра (если он применяется) |
Допустимы ли явные Esc-последовательности |
NumericString |
2 |
Отсутствует |
ESC2/8 4/0 LSO |
НЕТ |
Продолжение табл. 2
Тип |
Предполагаемый кодовый набор ОО (регистрационный номер) |
Предполагаемый кодовый набор СО и С1 (регистрационный номер) |
Предполагаемая Вес-последовательность и перевод регистра (если он применяется) |
Допустимы ли явные Esc-по- следователь- ности |
PrintableString |
2 |
Отсутствует |
ESC2/8 4/0 LSO |
НЕТ |
TeletexString (Тб 1 String) |
102 |
106 (СО) 107 (С1) |
Esc2/8 7/5 LSO Esc2/1 4/5 E‘sc2/2 4/8 |
ДА |
Videotexstring |
102 |
1 (СО) ТЗ (С1) |
Esc2/8 7/5 LSO Esc2/1 4/0 Esc2/2 4/1 |
• ДА |
VisibleString (ISO646String— |
2 |
Отсутствует |
ESC2/8 4/0. LSO |
НЕТ |
lA5String |
2 |
1 (СО) |
ESC2/8 4/0 LSO ESC2/1 4/0 |
НЕТ |
GraficString |
2 |
Отсутствует |
ESC2/8 4/0' LSO |
ДА |
GeneralString |
-2 |
1 (СО) |
ESC2/8 4/0 LSO ESC2/1 |
ДА |
Примечание. Многие из часто используемых знаков (например от А да Z) входят в несколько знаковых наборов с различными регистрационными номерами и Esc-последовательностями, В тех случаях, когда строка знаков относится к типу, для которого разрешается использование Esc-последовательностей, возможно несколько различных способов его кодирования (п. 5.3).
Использование описателей не допускается, за исключением случаев, когда это явно разрешается пользователем АСН.1.
Примечание. Выбор одного из типов АСН.1 предоставляет ограниченные функциональные возможности, аналогичные функциональным возможностям описателей. Конкретные протоколы прикладного уровня могут либо предписывать передачу описателей в составе других протокольных элементов, либо детально определять способ их использования.
Пример. Пусть определение типа в нотации АСН.1 имеет вид: Name : : = VisibleString.
Тогда значение этого типа
«Jones»
может быть закодировано (в простой форме) так:
VisibleString Длина Содержимое
1А 05 4A6F6E6573
либо (в составной форме, с явным заданием длины) как:
VisibleString ЗА |
Длина 09 |
Содержимое |
Строка октетов |
Длина |
Содержимое |
04 |
03 |
4A6F6E |
Строка октетов |
Длина |
Содержимое |
04 |
02 |
6573 |
либо (в составной форме, с неявным заданием длины) как:
VisibleString |
Длина |
Содержимое |
ЗА |
80 |
30 |
Строка октетов |
Длина |
Содержимое |
04 |
03 |
4A6F6E |
Строка октетов |
Длина |
Содержимое |
04 |
02 |
6573 |
Конец содержимого Длина
00 00
В приведенном выше примере проиллюстрированы три из многих-возможных форматов кодового представления, которые отправитель может использовать по своему выбору. Получатели должны обрабатывать кодовые представления всех допустимых форматов (п. 5.3).
КОДОВЫЕ ПРЕДСТАВЛЕНИЯ ЗНАЧЕНИЙ
ОБЩЕУПОТРЕБИТЕЛЬНЫХ ТИПОВ АСН.1
Кодовое представление получается в результате применения правил, определенных в настоящем стандарте, в соответствии с определением типа.
ИСПОЛЬЗОВАНИЕ КОДОВЫХ ПРЕДСТАВЛЕНИЙ ПРИ
ОПРЕДЕЛЕНИИ СИНТАКСИСА ПЕРЕДАЧИ
Ссылка на правила кодирования, определенные настоящим стандартом, и их применение дают возможность определить для каждого значения данных какого-либо одного типа АСН.1 кодовое представление в виде единой строки октетов, содержащей в себе признак окончания и однозначно задающей закодированное значение.