声明:本文是自己结合所学及项目开发,面向5G等3GPP系列协议,对ASN.1中的UPER编码进行的系列讲解,禁止转载!
在第一讲中,主要是引入了UPER编码,接下来将针对UPER编码,列出ASN.1的主要数据类型,并针对每种类型给出编码方式及流程图,及利用OSS给出编码实例!
UPER的编码原则是:用尽可能简单的规则得到最简洁的编码。
根绝X.680协议,ASN.1的数据类型主要有以下几种:
1)简单类型:a.BOOLEAN(布尔类型,只有真假两个值),b.NULL(空),c.INTEGER(整形,可表示任意长度的整数),d.ENUMERATED(枚举类型),e.BIT STRING(位串,代表以比特为单位的二进制字符串),f.OCTET STRING(八位串,代表以自己为单位的二进制字符串);
2)复合类性:g.CHIOCE(选择类型,可表示每次选择数据类型中的一个),h.SEQUENCE(序列,可表示一组不同数据类型的集合,=c中struct),I.SEQUENCE OF (可表示定义了同一数据类型元素的集合,=c中数组),j.SET(同SEQUENCE), k.SET OF (同SEQUENCE OF);
在最新的X.691协议中给出了以上每种类型的编码方式,本文是对对691协议中编码方式的整理及实例验证,并且着重对扩展标记“...”存在问题进行研究,因为针对最新的5G 3GPP协议中涉及到的ASN.1结构,相对4G有了一些扩展及改变,本文的研究可以更好的对5G 3GPP协议中涉及到的ASN.1结构的编码实现。
接下来本文对以上a-k种数据类型,分别按照基本定义/691协议编码内容/流程图/编码实例等步骤进行讲解,