ASN.1 枚举类型和选择类型有啥区别?

Posted

技术标签:

【中文标题】ASN.1 枚举类型和选择类型有啥区别?【英文标题】:What is the difference between ASN.1 enumerated type and choice type?ASN.1 枚举类型和选择类型有什么区别? 【发布时间】:2011-03-19 09:42:11 【问题描述】:

您能否举个例子来说明何时使用枚举以及何时使用带有 ASN.1 的选择类型?

【问题讨论】:

【参考方案1】:

CHOICE 和 ENUMERATED 用于不同的目的,就像 C 中的“enum”和“union”一样。

ENUMERATED 只列出一组元素:

MyFruit ::= ENUMERATED 香蕉 (1)、苹果 (2)、梨 (3)

CHOICE 允许从列表中选择一个元素,并定义其属性:

我的选择 ::= 选择 一个整数, b 布尔值, c SEQUENCE (SIZE(1..10)) of MyFruit

如果您使用 ASN.1 值表示法来声明这些类型的变量,它将如下所示:

aFruit MyFruit ::= 香蕉

aChoice MyCHOICE ::= c:香蕉、苹果、香蕉、梨

anotherChoice MyCHOICE ::= a:10

看到了吗? CHOICE 允许使用相同的类型名来存储不同的类型(因此是值)。就像 C 中的“联合”。

希望这会有所帮助。

【讨论】:

以上是关于ASN.1 枚举类型和选择类型有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

java中的枚举到底有啥作用?

C语言中的枚举类型有啥用么?

第一篇:容易遗忘的“枚举”

C语言的enum中的枚举名有啥用?

Python,枚举类型有啥用? [复制]

枚举类型和数组的区别?