В чем разница между перечисляемым типом ASN.1 и типом выбора? - PullRequest
2 голосов
/ 22 июля 2010

Можете ли вы дать мне пример, чтобы показать, когда использовать перечисление и когда использовать тип выбора с ASN.1?

1 Ответ

3 голосов
/ 20 августа 2010

CHOICE и ENUMERATED используются для разных целей, в отличие от "enum" и "union" в C.

ENUMERATED перечисляет только набор элементов:

MyFruit :: = ENUMERATED{banana (1), apple (2), pear (3)}

CHOICE позволяет выбрать один элемент из списка и определить его атрибуты:

MyCHOICE :: = CHOICE {aINTEGER, b BOOLEAN, c SEQUENCE (SIZE (1..10)) OF MyFruit}

Если вы используете нотацию значений ASN.1 для объявления переменных этих типов, это будет выглядеть так:

aFruit MyFruit :: = банан

aChoice MyCHOICE :: = c: {банан, яблоко, банан, груша}

anotherChoice MyCHOICE :: = a: 10

См.?CHOICE позволяет использовать одно и то же имя типа для хранения разных типов (таким образом, значений).Как и «союз» в C.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...