ASN.1编解码规则之类型定义.docx_第1页
ASN.1编解码规则之类型定义.docx_第2页
ASN.1编解码规则之类型定义.docx_第3页
ASN.1编解码规则之类型定义.docx_第4页
ASN.1编解码规则之类型定义.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安星河亮点信息技术有限公司ASN.1编解码规则之类型定义ASN.1最基本的概念是类型和值,一个类型是一组值的集合,表示潜在的传送信息,实际中,只有值被传送,类型分为简单类型、复合类型、子类型三类;简单类型是ASN.1的基本组成部分,通常用来描述事物的单一属性。复合类型由一个或者多个它的域构成,这些域可以使任意类型,子类型是其父类型的变形,前者的值域是后者值域的子集;简单类型:1. BOOLEAN类型又称布尔类型,有两种可能的取值:“TRUE”和“FLASE”;RRC协议中不存在对此类型的单独定义,一般将其定义在SEQUENCE类型内,具体的定义和赋值方法如下表所示:定义DL-CommonInformation-r4 := SEQUENCE std-Indicator BOOLEAN, 赋值Example DL-CommonInformation-r4 := tstd-Indicator TRUE, BOOLEAN的编码结果为1个比特:1或者0,分别对应TRUE或者FLASE,因此,tstd-Indicator的编码结果是1(郭丹的论文里面是0);2. NULL类型又称为空类型,表示信息中不包含任何内容,传递时接收方知道与其相关的语义,该类型适合传递报告或者确认消息,和BOOLEAN一样,RRC协议中也不存在对该类型的单独定义,而将其定义在SEQUENCE中,如下表所示:定义RadioBearerSetup-r3-IEs := SEQUENCE tdd NULL, 赋值Example RadioBearerSetup-r3-IEs := tdd NULL, 不需要对NULL类型数据进行编码,如果它是CHIOCE或者SEQUENCE的可选域或者缺省域,导言作为此类型的索引来确定是否存在该类型的数据;3. INTEGET类型又称为整数类型,它的值集合是任意长度的整数,可以将该类型数据定义成一个常数,也可以使用子类型限制语句将其值限制在一个区间内取值,定义如下表所示:定义MaxROHC-profile-r4 INTEGER := 8CD-AccessSlotSubchannal := INTEGER(0.11)赋值Example CD- AccessSlotSubchannal := 0如果该类型被定义为常数时,不需要编码,因为解码一方也知道相同的构文,从而可以正确解码,因此MaxROHC-profile-r4的编码结果为空,反之,需要编码,比如CD-AccessSlotSubchannal在有限范围内取值,有12个值可以取,因此用四位比特数来对它进行编码,所以CD-AccessSlotSubchannal的编码结果是0000;4. ENUMERATED类型又称枚举类型,当需要列出对象清单的时候,就要用到该类型,他经常被用来描述系统状态或者错误报告,该类型的定义和复制方法如下表所示:定义RRC-StateIndicator := ENUMERATED Cell-DCH,cell-FACH,cell-PCH,ura-PCH赋值Example RRC-StateIndicator := cell-FACH;有四个选项,因此使用2个比特位来进行编码,RRC-StateIndicator的编码结果是01;5. BIT STRING类型又称为二进制比特串类型,该类型值可以为空或者任意长,常被用来定义那些可以表示为二进制或布尔向量的数据,比特串最左边的比特是第一位,最右边的比特是最末位;该类型的表示有单引号界定,二进制形式由数字0和1组成,后面附加字母B,十六进制形式由数字09和字母AF组成,后面附加字母H,位串的长度应该尽量使用子类型进行限制,因为这能使编码器分配合适的空间,保证编码更加简短,构文如下表所示:定义C-RNTI := BIT STRING(SIZE(16)赋值Example C-RNTI := 0010010000111100B定义AccessServiceClass-FDD := SEQUENCE assignedSubChannelNumber BIT STRINGb3(0),b2(1),b1(2),b0(3) (SIZE(4)赋值Example2 AccessServiceClass-FDD := assignedSubChannelNumber : 0010B对于固定长度的BITSTRING类型,编码时不需要长度域,编码结果即为比特值,反之要在前面加上长度域,上表中该类型的比特串是固定值的两种定义和相应赋值方式,“example1”和“assignedSubChannelNumber”的编码结果分别为“0010010000111100”和“0010”;6. OCTET STRING类型又称为八位比特串类型,该类型编码时候,比特位后面有时需要填充值为0的比特,以使比特位的位数达到8的整数倍;定义NAS-SystemInformationGSM-MAP := OCTET STRING(SIZE1.8)赋值Example NAS-SystemInformationGSM-MAP := 31H因为长度是范围是1.8,example的取值是2个8位比特组,因此长度域为“001”,它的完整编码是“00100110001”我觉得是应该是这个00100011001;复合类型1. SEQUENCE类型每个域由小写字母开头的标识符来定义,还可以用OPTIONAL和DEFAULT来标记这些域可选和缺省域,构文如下表所示:定义DL-DCCH-Message := SEQUENCE integrityCheckInfo IntegrityCheckInfo OPTIONAL message DL-DCCH-MessageType赋值N-CR-T-CRMaxHyst := SEQUENCE n-CR integer(1.16) DEFAULT 8 t-CRMaxHyst T-CRMaxHyst对SEQUENCE类型编码是根据从上到下,从外层到内层的顺序依次对内嵌的每个域进行编码,编码时,每个可选域和缺省域都用一个比特的导言来表示是否存在于SEQUENCE类型数据中,分别用“0”、“1”来表示,如果不存在就不对该域进行编码,反之进行编码;DEFAULT后面默认值应该和该域的类型一致,对被它标记的域进行编码时,如果赋值等于其缺省值,则编码时导言为“0”且后面没有对值的编码,如果为“1”,后面有对值的编码,对具有DEFAULT标记的域进行解码时,如果导言为1,该域的值对应于值域中的值;如果导言为0,该域的值为缺省值;2. SEQUENCE OF类型该类型相当于一些程序设计语言中的动态数组或链表,其内所有的域都是同一类型且数量是可变的,如下表所示:定义IMSI-GSM-MAP := SEQUENCE(SIZE(6.21) OF DigitDigit := INTEGER(0.9)赋值Example IMSI-GSM-MAP := 0, 0, 1, 1, 3, 6, 5 对SEQUENCE OF类型的数据进行编码时,如域的个数是固定的,就没有长度域,否则,用长度域表示域的个数,接下来依次对每个域进行编码,“example”的长度域是“0001”,全部的编码结果是“0001 0000 0000 0001 0001 0011 0110 0101”;3. CHIOCE类型该类型有几个域可供选择,具体构文如下表所示:定义TFCS-InfoForDSCH :=CHOICE ctfc2bitINTEGER (0.3), ctfc4bit INTEGER (0.15),ctfc6bitINTEGER (0.63), ctfc8bit INTEGER (0.255),ctfc12bit INTEGER (0.4095), ctfc16bitINTEGER (0.65535),ctfc24bit INTEGER (0.16777215)赋值Example TFCS-InfoForDSCH := ctfc4bit : 3CHIOCE类型首先用导言指示选择哪一个域,化成十进制就是0代表第一项,以此类推,后面紧跟所选项的编码结果,对“example”的编码结果为“001 0011”;子类型在某些情况下,只需要ASN.1类型取值的一些子集是有效的,有时候,只需要一些特定范围内的子集有效,子类型定义是通过在父类型记法后面附加适当的子类型说明来实现的,子类型可用“|”将不同的父类型值域的子集分开,整个表达式位于圆括号内,如下表所示:定义Day := ENUMERATED monday(0), tuesday(1), wednesday(2), thursday(3), friday(4), saturday(5), sunday(6) 赋值Wednesday := Day (wednesday)WeekEnd := Day (saturday | sunday)上表的子类型一栏中,上面的表达式表示“WeekEnd”类型的取值只有一个值:“wednesday”。下面的表达式表示该类型的取值包括两个值:“saturday” 和“sunday”。TAG类型ASN.1语法的基本构成,即模块,它是认为的将ASN.1构文划分为几个部分,使得构文更加清晰,便于阅读和修改;在ASN.1中,每个类型都有一个相应的Tag,有三种全局TAG模式,前两种为显式定义的EXPLICIT TAGS和IMPLICIT TAGS,另一种叫自动Tag模式AUTOMATIC TAGS;全局Tag模式定义在ASN.1模块中的关键字DEFINITIONS和标号“:=”之间,如下表所示:定义M-one DEFINITIONS IMPLICIT TAGS :=BEGIN ENDM-two DEFINITIONS AUTOMATIC TAGS :=B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论