ГОСТ Р ИСО/МЭК 8825-2-2003
9.5.3 Каждая часть, упомянутая в 9.5.2, порождает:
а) либо вырожденное поле (null), либо
в) битовое поле, либо
г) выровненное по октету битовое поле, либо
д) список полей, который может содержать либо битовые поля, либо выровненные по октету битовые поля, либо те и другие.
9.6 Кодируемые типы
9.6.1 Дальнейшие разделы специфицируют кодирование следующих типов в списках полей: булевского, целочисленного, перечислимого, действительного, «битовая строка», «строка октетов», вырожденного, «последовательность», «последовательность-из», «множество», «множество-из», выборочного, открытого, «идентификатор объекта», «относительный идентификатор объекта», «встро-енное-здп», внешнего, ограниченных и неограниченных типов символьных строк.
9.6.2 Тип ANY, определенный в ГОСТ Р ИСО/МЭК 8824—93, должен кодироваться как открытый тип.
9.6.3 Селективный тип должен кодироваться как выбранный тип.
9.6.4 Кодирование тегированных типов не включено в настоящий стандарт, так как, кроме исключений в 9.2, тегирование невидимо в модели типа и значения, используемой для данных правил кодирования. Тегированные типы кодируются в соответствии с кодированием типа, который был тегирован.
9.6.5 Следующие «полезные типы» раздела 40 ГОСТ Р ИСО/МЭК 8824-1 должны кодироваться так, как если бы они были заменены своими определениями по ГОСТ Р ИСО/МЭК 8824-1:
- обобщенное время;
- всемирное время;
- описатель объекта.
Ограничения на полезные типы не являются видимыми для PER.
Ограничения на кодирование типов обобщенного и всемирного времени, установленные в CER и DER (ГОСТ Р ИСО/МЭК 8825-1, 11.7 и 11.8), должны применяться и здесь.
10 Процедуры кодирования
10.1 Создание полного кодирования
10.1.1 Список полей, полученный в результате применения настоящего стандарта к самому внешнему значению, должен использоваться для создания полного кодирования значения абстрактного синтаксиса следующим образом: каждое поле в списке рассматривают поочередно и присоединяют (с предшествующими дополнительными нулевыми битами заполнения) к концу битовой строки, которая должна образовать полное кодирование значения абстрактного синтаксиса.
10.1.2 В варианте UNALIGNED настоящих правил кодирования все поля должны быть сцеплены без заполнения. Если результат кодирования самого внешнего значения является пустой битовой строкой, то битовая строка должна быть заменена единственным октетом со всеми битами, равными 0. Если результат является непустой битовой строкой и не кратен восьми битам, то к строке должны быть добавлены нулевые биты (не более семи) для кратности восьми.
10.1.3 В варианте ALIGNED настоящих правил кодирования все битовые поля в списке полей должны быть сцеплены без заполнения, а все выровненные по октету битовые поля должны быть сцеплены после присоединения (от нуля до семи) нулевых битов для получения длины кодирования, кратной восьми битам. Если результат кодирования самого внешнего значения является пустой битовой строкой, то битовая строка должна быть заменена единственным октетом со всеми битами, равными 0. Если результат является непустой битовой строкой и не кратен восьми битам, то к строке должны быть добавлены нулевые биты (не более семи) для кратности восьми.
Примечание — Кодирование самого внешнего значения является пустой битовой строкой, если, например, значение абстрактного синтаксиса является вырожденным типом или ограниченным до единственного значения целочисленным типом.
10.1.4 Результирующая битовая строка является полным кодированием значения абстрактного синтаксиса.
10.2 Поля открытого типа
10.2.1 Для кодирования полей открытого типа значение фактического типа, занимающее поле, должно быть закодировано в списке полей, который затем должен быть преобразован в полное
10