ГОСТ Р ИСО/МЭК 8825-3—2016
длины.
list-lengthEncoding «AuxVariableListLength ::= {
USE «AuxVariableListLengthStruct -
См. D.2.8.4.
MAPPING ORDERED VALUES
WITH PER-BASIC-UNALIGNED}
-
Второв отображение: длина списка кодируется в виде выбора между короткой формой "normally" и
—
длинной формой "sometimes".
D.2.8.4 Присвоением структуры кодирования является:
«EnclosingStructureForListStruct ::= «CONCATENATION {
aux-length «AuxVariableListLength,
list «VariableLengthList}
«AuxVariableListLength#INT (0..1023)
«AuxVariableListLengthStruct«ALTERNATIVES {
normally #INT (0..31),
sometimes «INT (32..1023)}
D.2.8.5 Детерминант длины для компонента «list» будет переменным. Детерминант длины для значений
короткого списка кодируется с помощью 1 бита для детерминанта выбора и 5 битов для детерминанта длины.
Детерминант длины для значений длинного списка кодируется с помощью 1 бита для детерминанта выбора и 10
битов для детерминанта длины.
D.2.9 Списки с одинаковой длиной
D.2.9.1 Присвоение АСН.1 равно:
EqualLengthLists ::= SEQUENCE {
listl List1,
Iist2 List2}
(CONSTRAINED BY {
- -
"hst1" и 1ist2" всегда имеют одно и то же число элементов.
—
})
Listl ::= SEQUENCE (SIZE (0..1023)) OF BOOLEAN
List2 ::= SEQUENCE (SIZE (0..1023)) OF INTEGER (1..2)
D.2.9.2 Как «listl», так и «Iist2» имеют одинаковое число элементов. а разработчик ECN желает использо
вать единый детерминант длины для обоих списков (PER может кодировать поля длины для обоих компонентов).
D.2.9.3 Присвоениями обьекта кодирования являются:
equalLengthListsEncoding «EqualLengthLists{
USE «EqualLengthListsStruct
MAPPING FIELDS
WITH{
ENCODE STRUCTURE{
listl listlEncoding{< aux-length >},
Iist2 list2Encoding{< aux-length >}}
WITH PER-BASIC-UNALIGNED})
Первый объект кодирования определяется с двумя параметризованными объектами кодирования классов
«Listl и «List2 соответственно, используя поле длины в качестве реального параметра. Эти два объекта кодиро
вания используют общий параметризованный объект кодирования класса «REPETITION.
listl Encoding {< REFERENCE : length >} «Listl ::= {
ENCODE STRUCTURE { USE-SET
STRUCTURED WITH list-with-determinantEncoding {< length >}}
WITH PER-BASIC-UNALIGNED}
list2Encoding {< REFERENCE : length >} «List2 ::= {
ENCODE STRUCTURE { USE-SET
STRUCTURED WITH list-with-determinantEncoding {< length >}}
WITH PER-BASIC-UNALIGNED}
list-with-determinantEncoding {< REFERENCE : length-determinant >} «REPETITION ::= {
REPETITION-ENCODING {
179