ГОСТ Р ИСО/МЭК 8825-2-2003
Приме чание —Заполняющие биты, добавленные дли выравнивания по октету при сортировке, не
появляются в фактическом кодировании.
21.2Для BAS1C-PER «множество-из» должно быть закодировано так. как если бы это был тип
«последовательность-ид».
22 Кодирование выборочного типа
П р и м е ч а н и е — Выборочный тип кодируется путем кодирования индекса, определяющего выбран
ную альтернативу. Индекс кодируется как ограниченное целое число (если в выборочном типе нет маркера
расширении, когда индекс колируется как обычно маленькое неотрицательное целое число) и, следовательно,
занимает битовое иоле фиксированной длины с минимальным количеством битов, необходимых для кодиро
вания индекса. (Хотя, в принципе, оно может быть произвольно большим). Далее следует кодирование
выбранной альтернативы с альтернативами, которые являются расширяющими дополнениями, закодирован
ными так. как если бы они были значениями полей открытою типа. Когда выбор имеет только одну атьтер-
нативу, индекс нс кодируется.
22.1 На кодирование выборочных типов видимые для PER ограничения не влияют.
22.2 Каждый компонент выбора имеет связанный с ним индекс, значение которого равно нулю
для первой альтернативы в корне выбора (альтернативы берутся в каноническом порядке, опреде
ленном в ГОСТ Р ИСО/МЭК 8824-1, 8.4), равно единичному значению для второй, и так далее
до последнего компонента в корне расширения выбора. Аналогично значение индекса
присваивается каждому расширяющему дополнению, начиная с нуля, как и для компонентов корня
расширения. Обозначим и значение самого большого индекса в корне.
При мечание - ГОСТ Р ИСО/МЭК 8824-1. 28.4. требует, чтобы каждое последующее расширяющее
дополнение имело значение тега большее, чем последнее, добавленное к «AdditionalAltcmalivcTypcList».
22.3 Для канонического упорядочения альтернатив, которые содержат нетегированный выбор,
каждый нетегированный тип выбора должен быть упорядочен так. как если бы он имел тег, равный
наименьшему тегу в корне расширения данного выборочного типа или любого вложенного петеги-
рованного выборочного типа.
22.4 Если выбор имеет только одну альтернативу в корне расширения, то индекс не должен
кодироваться при выборе этой альтернативы.
22.5 Если выборочный тип имеет маркер расширения, го скачала к списку полей в поле битов
длины должен бытьдобавлен один бит. Он равен единице, если вданном кодировании присутствуют
значения расширяющих дополнений, и нулю — п противном случае. (Далее по тексту этот бит
называется «бит расширения»). Если маркер расширения отсутствует, то бит расширения не должен
добаатяться.
22.6 Если бит расширения отсутствует, то индекс выбранной альтернативы должен кодиро
ваться в поле по процедурам раздела 12 как значение целочисленного типа (без маркера расширения в
ограничении подтипа), заключенное в диапазоне от 0 до п, и это поле должно быть добавлено к
списку полей. За этим полем должны следовать поля выбранной альтернативы, и процедуры
настоящего раздела завершаются.
22.7 Если бит расширения присутствует и выбранная альтернатива находится вкорне расширения,
то индекс выбранной альтернативы должен быть закодирован так, как если бы маркер расширения
отсутствовал, в соответствии с разделом 12, и процедуры настоящего раздела завершаются.
22.8 Если бит расширения присутствует и выбранная альтернатива не находится в корне
расширения, то индекс выбранной альтернативы должен быть закодирован как обычно маленькое
неотрицательное число с lb = 0, и это поле должно быть добавлено к списку полей. За этим полем
должен следовать список полей, содержащих выбранную альтернативу, закодированную как значе
ние поля открытого типа, как определено в 10.2, и процедуры этого раздела завершаются.
П ри ме ча н и е —Скобки версии в определении расширяющих дополнений выбора нс влияют на
кодирование «ExlcnsionAdditionAltcrnativcs».
23 Кодирование типа «идентификатор объекта»
Приме чание —Кодирование типа «идентификатор объекта» использует октеты содержимого BER с
предшествующим детерминантом длины, который, на практике, будет одним октетом.
23