ГОСТ Р ИСО/МЭК 8825-3—2016
IMPORTS Example3Encodings, #Sequence1. #Sequence2, #Octet3. rrSequence3. #SequenceOflntegers
FROM Example3-EDM
{ joint-iso-itu-t(2) asn1(1) ecn(4) examples(5) edm-module3(10) };
ENCODE #Sequence1,
WITH Example3Encodings-1
COMPLETED BY PER-BASIC-UNALIGNED
ENCODE #Sequence2. #Octet3. #Sequence3. #SequenceOflntegers
WITH Example3Encodings-2
COMPLETED BY PER-BASIC-UNALIGNED
END
D.4 Пример кодирования детерминанта «бит-еще»
D.4.1 Описание проблемы
D.4.1.1 Этот пример взят из Рек. МСЭ-Т Q.763 (Система сигнализации №?7 — форматы и коды подсистемы
пользователя ЦСИС).
D.4.1.2 Существует потребность вырабатывать описанное ниже кодирование в виде серии октетов:
87в54321
Индикатор
расширения
РезервПрофиль протокола
D.4.1.3 Бит 8 является «индикатором расширения». Если он равен 0. то имеется следующий октет в том же
формате. Если он равен 1. то этот октет является последним в серии.
П р и м е ч а н и е — Кодирование PER для булевых значений дает 1 для
TRUE
и 0 для
FALSE,
a ECN тре
бует. чтобы последний элемент выдавал
FALSE,
а более ранние элементы —
TRUE.
Поэтому, если мы используем
для «бит-еще» булево значение с кодированием PER. то мы должны применить преобразователь
«not».
D.4.1.4 Это является традиционным использованием «бит-еще». несмотря на возможно необычные нульдля
«еще» и единица для «последний».
D.4.1.5 Пример мот бы упроститься, если бы «индикатор расширения» поменял использование нуля и едини
цы и если бы не было битов «резерв», но здесь предпочтение отдано использованию реального примера.
D.4.1.6 Имеются четыре подхода к решению этой проблемы.
D.4.1.7 Первый подход: включить в спецификацию АСН.1 компонент для обеспечения детерминанта «бит-
еще» (см. D.4.2). Этот подход отвергается по двум причинам. Первая состоит в том. что определение типа АСН.1
содержит компонент, который не переносит прикладную семантику. Вторая состоит в том. что этот подход требует
применения установки (избыточной) этого поля в правильное состояние в каждом элементе при повторении детер
минанта «бит-еще».
D.4.1.8 Второй подход: использовать отображения значения из неявно генерируемой структуры в определя
емую пользователем структуру кодирования, которая содержит детерминант «бит-еще» (см. D.4.3).
D.4.1.9 Третий подход: использовать механизм замены для включения детерминанта «бит-еще» (см. D.4.4).
D.4.1.10 Четвертый подход: использовать вставку головного узла в виде детерминанта «бит-еще» (это здесь
не иллюстрируется).
D.4.1.11 Каждый из трех последних подходов имеет свои преимущества, а выбор между ними является в
значительной степени вопросом стиля.
D.4.2 Использование АСН.1 для обеспечения детерминанта «бит-еще»
D.4.2.1 При этом подходе АСН.1 отражает все поля в кодировании. Подход обычно считается «нечистым»,
если поля, которые должны быть видимы только при кодировании, будут видимы для приложения, что уменьшает
«сокрытие информации», которое является сильной стороной АСН.1. В этом случав АСН.1 будет равно:
Profilelndication ::= SEQUENCE OF
SEQUENCE{
more-bit
reserved
protocol-Profile-ID
BOOLEAN,
BIT STRING (SIZE (2)),
INTEGER (0..31)}
188