Можете ли вы привести пример, чтобы показать, когда использовать перечисление и когда использовать тип выбора с ASN.1?В чем разница между перечисляемым типом ASN.1 и типом выбора?
ответ
ВЫБОР и пронумерованный используются для различных целей, так как разные, как «перечисление» и «союз» в C.
пронумерованный только перечисляет набор элементов:
MyFruit :: = {пронумерованный банан, яблоко, груша}
вЫБОР позволяет выбрать один элемент из списка, а также определить его атрибуты:
MyChoice :: = CHOICE { целочисленных, б BOOLEAN, с ПОСЛЕДОВАТЕЛЬНОСТЬ (SIZE (1..10)) OF MyFruit }
Если используется обозначение значения ASN.1 объявлять переменные этих типов было бы выглядеть следующим образом:
aFruit MyFruit :: = банан
aChoice MyChoice :: = с: {банан, яблоко, банан, груша}
anotherChoice MyChoice :: = а: 10
См? Функция CHOICE позволяет использовать одно и то же имя для хранения различных типов (таким образом, значения). Как «объединение» в C.
Надеюсь, это поможет.