ASN.1的类型与类型定义

  1. ASN.1中的类型
    类型是一个非空的值的集合,可以被编码后 传输。
内建数据类型 含义
INTEGER 全部整数(包括正数和负数)
REAL 实数,表示浮点数
ENUMERATED 标识符的枚举
BIT STRING 比特串
OCTET STRING 字节串
NULL 只包含一个值NULL,用于传送一个报告或者作为CHOICE类型中某些值

还有一些,我可能用不到,就不赘述了。

组合类型 含义
CHOICE 在类型中选择(相当于C中的联合)
SEQUENCE 由不同类型的值组成的一个有序的结构(相当于C中的结构体)
SET 有不用类型的值组成的一个无序的结构
SEQUENCE OF 由相同类型的值组成的一个有序的结构(相当于C中的数组)
SET OF 由相同类型的值组成的一个无序的结构
  1. 类型定义
    <新类型的名字>::=<类型描述>
    其中:
    <新类型的名字>是一个大写字母开头的标识符;
    <类型描述>是基于内建类型或在其他地方定义的类型。
    如:

      Married ::= BOOLEAN
      Age ::= INTEGER
      Picture ::= BIT STRING
      From ::= SEQUENCE
      {
      	name	PrintableString,
      	age		Age,
      	married	Married,
      	marriage-certificate Picture OPTIONAL
      } 
    

    为了接收方能够正确解码,发送方为每个值的类型附加一个数成为tag,在描述中以**[]**标识。如:

    Afters ::= CHOICE
    {
    cheese	[0] PrintableString,
    desser	[1] PrintableString
    }
    

注意: ASN.1允许递归式的类型分配,但我们应当保证其中包含至少一个非递归的值。
为了准确描述一个类型,我们需要对值的集合进行一定的限制。这用到了子类型约束,在类型后用圆括号进行标识。

Lottery-number ::= INTERGER(1..49)
Lottery-draw ::= SEQUENCE SIZE(6) OF Lottery-number

你可能感兴趣的:(ASN.1)