当前位置:文档之家› _ASN_PER编码规范

_ASN_PER编码规范

所以长度编码 L 为 3 位,而 3-bmin=2。因此编码为 010。后面则跟着 3 个八位组如:00000000 11111111 00000000 。
3.5 CHARACTER STRINGS 字符串的编码方式有多种情况的编码方式与 BITSTRING 和 OCTETSTRING 的编码方
式类似,只是对不同类型的字符串有不同的编码方法,下面将着重说明 CHARACTER STRINGS 中常用的 NumricString、PrintableString、NameString 的编码方法:
modulation 选择mod-QPSK,编码为0;
ss-TPC-Symbols 为空类型,不用编码
综上可得:该结构编码为100 0101 1 0
3.10 SEQUENCE(SIZE(ib..ub))OF component SEQUENCE OF 在 ASN.1 描述中用作循环。循环次数由 SIZE 确定。SEQUENCE OF 的前 导比特为 SIZE 中数的范围,编码规则与整数型相同。紧跟在前导比特之后的是循环体成员 component 的编码,component 可以是结构也可以是一个整型的参数。各成员编码后顺序放 置,每两个成员之间编码值不需分隔符,该类型对应于 C 语言中的数组。下面将以一个例 子来说明:
为第 3 项编码值为 2,选择项编码为:10。然后再对 small 项编码,因为取值为 16,索引值 为 14,整数范围是 2~17 共 16 个数,要编 4 比特,因此要对索引值 14 编 4 比特,即编码 为:1110。
3.9 SEQUENCE
一般说来,序列编码后都会产生一个前导位图,用以指示序列中的可选项或缺省项是否
例1:
RoutingParameter ::= BIT STRING (SIZE (10)) 上面的 RoutingParameter 是一个定长,且长度为 10 的比特串,编码时直接给出 10 位二 制数,例如编码为:‘1111100000’。 例 2:
SIB-Data-variable ::= BIT STRING (SIZE (1..214)) SIB-Data-variable 是一个变长的比特串,编码之前首先编长度,因为长度的范围为 1~ 214 共需要编 8 比特,因此若 SIB-Data-variable 是一个 5 位的比特串时则编码为:00000100 11111(前面 8 位是比特串长度的编码,后面 5 位是该比特串的值)。
ASN.1 编码规范及实现方式
一、ASN.1 语言概述
ASN.1(Abstract Syntax Notation Number One),抽象语法描述 1,是一种 ISO/ITU-T 标准。该语言描述了一种对数据进行表示、编码、传输和解码的数据格式,它提供的一整套 正规的格式用于描述对象的结构,具有类似于面向对象程序设计语言中所提供的类型机制, 可定义任意复杂结构的数据类型,而不同的数据类型之间还可以有继承的关系。因此,ASN.1 是以一种独立于计算机架构和语言的方式来描述数据结构的。同时,ASN.1 的描述可以容 易地映被射成 C 、C++ 或 Java 的数据结构,直接作为应用程序代码使用,并得到运行程 序库的支持。
modulation
ENUMERATED { mod-QPSK, mod-8PSK },
ss-TPC-Symbols
NULL ,
additionalSS-TPC-Symbols
INTEGER(1..15)
OPTIONAL
}
上面是一个SEQUENCE结构编码时我们分两步进行:
① 确定其前导位图.
该结构中有3个可选项,故可确定位图长度为3bit。我们根据需要选择其中的项,若某
3.4 OCTETSTRING 八位组串编码的原则与比特串相同。分成长度可变的八位串和长度不可变的八位串两
种。与比特串编码不同的是编码的值是八位串而不是比特串。 例: VALUE ::= OCTETSTRING(SIZE(1..8)) 若 VALUE 值是长度为 3 的八位串,则编码为:010,后面跟着 3 个因为长度区间为八,
ASN.1 作为一种数据表示标准产生于 20 世纪 80 年代早期的开放系统互联(OSI)网络模 型,虽然 OSI 模型并没有得到广泛的应用,但是 ASN.1 标准在继续进化。今天已有大量的 实际应用,这些应用包括:3G 移动系统、IP 语音、安全应用、传统电信网络、军事和空间 应用等许多方面。
另外,ASN.1 有多种标准化编码规则:如基本编码规则(BER)、规范编码规则(CER)、 识别名编码规则(DER)、压缩编码规则(PER)和 XER 编码规则(XER)。这些编码规 则描述了如何对 ASN.1 中定义的数值进行编码,以便用于传输,而与计算机、编程语言或 它在应用程序中如何表示等因素无关。同时,该编码具有先进的标识系统、信息扩展性、支 持快速可靠传输等特点,这在无线传输中是一种优势。
另外,PER 编译码必须依赖于 3GPP 的标准文档,也就是说,收发双方也必须知道层 3 消息的具体结构,这样编码和译码的才能被编译和识别。
三、PER 的编码规则
PER 的编码规则定义了多种数据类型,简单的地可分为两大类。第一类是结构类,如 CHOICE、 SEQUENCE 、ENUMERATED 等。另一类是简单类,如 INTEGER、 REALL 、 BOOLEAN 等。下面将对以下常用的类型的编码规则做一个总结: 3.1 INTEGER
BOOLEAN
} 上面的 segmentationIndication 是一个 BOOLEAN 型,意思是段的指示。当我们需要这
种指示时编码为 1,不需要时编码为 0。
3.3 BITSTRING 比特串的编码分成两种情况:长度固定:直接将比特串与前面的比特流叠加即可;长度
可变:按前述整型编码的规则,以描述长度范围最少比特的原则在比特串前面加上用于描述 长度所需的比特,然后将待编码的比特串加在后边。
整型是协议规范中用得最多的一种数据类型。对这种数据类型编码之前,首先要确定其 取值范围,即上下界之间的数的个数。而编码的长度是根据数的范围来确定的。当 2m<范 围≤2m+1 时,对该整数取值用 m+1 位二进制表示。但对范围内的数的编码不是对其实值而是 对其索引值进行编码,编码的索引值是从 0 开始的。
存在。每以可选项(或缺省项)用 1bit 来指示,“1”表示存在,“0”表示不存在。若一
个序列型中包含 n 个标注为可选(或缺省)的成员,那么,前导位图的长度就是 n bit。位
图中的比特顺序与序列中各可选(或缺省)的成员排列一致。然后再对 SEQUENCE 中的各
成员进行编码,这种类型对应于 C 语言中的结构。下面将以实例来说明:
IndividualTimeslotInfo-LCR::= SEQUENCE
{
timeslotNumberINTEGER(1..15)
OPTIONAL,
tfci-Existence
BOOLEAN,
midambleShiftAndBurstType
MidambleShiftAndBurstType-LCR OPTIONAL,
因此,ASN.1 不但适合表示现代通信应用中那些复杂的、变化的及可扩展的数据结构, 而且还有适合的协议编码方式。同时,3GPP 标准 ASN.1 文档中也包含了完整、详细的数据 单元(PDU)协议。这些都为 3G 移动系统中 ASN.1 的应用打下了基础。3G 协议的 ASN 编 码跟一般的编码相比具有高效性、严谨性以及规范性等特点。
项选择了编码位图为1,否则为0。假设我们选择了timeslotNumber而其它项都不选的话,则
在对结构内部编码之前应编码为:100
② 根据SEQUENCE结构内部的项,从上到下依次编码。
TimeslotNumber 取值为6,则编码为0101;
tfci-Existence 存在TFCI指示,则编码为1;
码。其值的范围从 0 开始。枚举类型编码时,只对其项的索引值编码。 例: Modulation ::= ENUMERATED { mod-QPSK , mod-8PSK } 上面是一个 Modulation 是枚举类型,编码时,首先看枚举项的个数为 2,21=2,因此
编码为 1bit,当选 mod-QPSK 调制模式时编码为 0,选 mod-8PSK 调制模式时编码为 1。
3.8 CHOICE 选择型的编码类似于整型,以最少的比特来描述选择体内各成员的索引值。值的范围从
0 开始。与枚举不同的是,编完 CHOICE 的索引值,紧接着就应编码索引值对应的单元。而 枚举型将索引值编完后就结束。下面将以一个例子对这种类型的编码进行说明:
例:
NumberOfTransportBlocks::= CHOICE
① NumricString 类型中成员为 0~9,共十个数。因此在编码时长度可定为 4bit(23<10<24).,因此此种类型的串编码是每个数字编为 4 比特。
同理,PrintableString 中包含的字符为:“a..z”、“A..Z”、 “0..9”、“space”、“,”、“(”、 “)”,“+”、“、”、“-”、“/”、“.”、“=”、“?”、“:”共 74 个字符,每个字母应编码为 7 比 特。NameString 共 52 个大小写字母,每个字母编码则为 6bit。
② NumricString 123 的编码为: 0001 0010 0011。 NameString “cat”编码为: 011100 011010 100010,上面每个字母编 6 比特,每 个字母的值是其在 NameString 中的索引值。
3.6 NULL NULL 类型不用编码。
3.7 ENUMERATED 枚举型的编码类似于整型,也是以描述枚举内全体成员所需比特数最少的原则进行编
相关主题