- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ASN.1编译码规则技术总结
1. ASN.1语言简介
ASN.1(Abstract Syntax Notation One)是一种类型描述语言具有类似于面向对象程序设计语言中所提供的类型机制,它可定义任意复杂结构的数据类型,而不同的数据类型之间还可以有继承的关系。
标准包括:ISO 8824-1| ITU-T X.680: Specification of basic notation
ISO 8824-2| ITU-T X.681: Information object specification
ISO 8824-3| ITU-T X.682: Constraint specification
ISO 8824-4| ITU-T X.683: Parameterization of ASN.1
ASN.1 特别适合表示现代通信应用中那些复杂的、变化的及可扩展的数据结构。
ASN.1 可分为两个部分:
语法规则:从数据类型、内容顺序或结构方面来描述消息的内容。
编译码规则:如何编译码实际消息的数据。
特点:
表达简单和复杂类型的能力;
类型根据大小或数值进行约束;
大写开头表示类型名,小写开头的表示变量名/字段名;
字段可以标记为OPTIONAL,便于扩展。
2.PER 编码简介
3GPP的规范中,由ASN.1到传输码的转换统一使用定义在ITU-T X.691中的PER(Packed Encoding Rules)规则,因此这里讲的ASN编译码规则也就是ASN编码中的PER编译码规则。
PER 有两个变体:对齐方式和非对齐方。对齐方式用于:Iub、Iur、Iu 接口的ASN.1 的传输编码。非对齐方式:仅用于空中(UU)接口的ASN.1转换,两者的编码过程基本相同。
在对齐的方式下,若前面所有单元的信息经编码后得到的比特流长度不是一个八位组的倍数,而后一个信息又是以八位组为单位的(字符串),那么就需要在前面生成的比特流后面补“0”,使其长度为8的倍数。所以一般补的位数为0-7bit。而非对齐的方式无此限制。所有信息单元按编码规则生成的比特数据将按其被编码的顺序首尾相连,中间不需要任何填充。按ITU-T X.691的规定,若最终的编码结束后。所得的编码不是8的倍数,信息编码结束后的填充由RRC负责。
另外,PER编译码必须依赖于3GPP的标准文档。也就是说,收发双方也必须知道层3消息的具体结构,这样编码和译码的才能被编译和识别。
3.PER的编码规则总结
一、对整数和域长的编码
在PER编码中,整数的编码和长度L 的编码,在实际的结构类型编码中经常用到,是结构中对类型编码的基础,因此,下面首先讲述这两种编码的规则:
1.整数的编码
①不受限的整数编码
不受限整数n的编码是以最小八位组来编码的。它分成对长度的编码和对数的编码两部分,并且都是以八位组为单位来编的,若为负数则以2’s-compLetement来编码的(即以补码的形式编)。
例(with L: preceding the Length determinant – if any - and C: preceding the contents encoding - if any):
integer1 INTEGER ::= 4096
integer2 INTEGER (MIN .. 65535) ::= 127
integer3 INTEGER (MIN .. 65535) ::= -128
integer4 INTEGER (MIN .. 65535) ::= 128
其编码为:
integer1: L: C:00000000
integer2: L: C:integer3: L: C:integer4: L: C:10000000
以上例子可以看出:当下限没有一个具体的值,而表示为一个任意小的数时,这种整数看作是不受限的整数来编码。
②半受限的整数的编码
设n∈[bmin,+∞],d=n-bmin。
对n-bmin进行编码。这种编码是以最小八位组来编码的,即为[Log256d]个八位组。这个八位组的组数[Log256d]也将作为长度L 来编码。
例:
integer5 INTEGER (-1.. MAX) ::= 4096
integer6 INTEGER (1 .. MAX) ::= 127
integer7 INTEGER (0 .. MAX) ::= 128
文档评论(0)