一种Asn.1编码的快速读码方法技术

技术编号:7084085 阅读:271 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开一种Asn.1编码的快速读码方法,首先按照Asn.1编码规则读取编码的标识符八位位组,判读该八位位组是否为空闲字段,若不为空闲字段,则按照Asn.1编码规则读取该编码信息的长度八位位组,再根据得到的字节长度信息,读取相应字节长度的编码信息后,返回并读取下一条编码信息。否则,预设空闲字段字节长度的初始值为一固定值,最终确定空闲字段的实际长度,再从上一条编码信息的最后一个字节开始跳过相应长度的字节,再返回读取下一条编码信息。本发明专利技术解决了现有读码过程中需要依次判断字节是否为空闲字段的方法,能快速确定空闲字段的实际长度,大大提高了读码速度。

【技术实现步骤摘要】

本专利技术属于计算机编码数据处理
,具体涉及一种Asn. 1编码的快速读码方法。
技术介绍
Asn. 1 (Abstract Syntax Notation One)编码是定义抽象数据类型规格形式的标准,是用于描述数据的表示、编码、传输、解码的灵活的记法。它提供了一套正式、无歧义和精确的规则以描述独立于特定计算机硬件的对象结构。Asn. 1编码是通信协议中描述数据传输的正式标记,它与语言实现和物理表示无关,与应用的复杂度无关,尤其适合表示现代通信应用中那些复杂的、变化的和可扩展的数据结构。Asn. 1编码的每条编码信息之间相互独立,解码时互不影响,因此在两条编码信息中间插入若干字节完全相同的数据如FF或 00,这些数据不包含任何信息且不会影响对信息的正确解码,通常称之为空闲字段。在程序进行解码读码时,如何快速的跳过空闲字段,继续对后续编码信息进行读码和解码,是非常重要的。目前处理方法是在读码过程中,对每个字节进行逐个判断以确定是否是空闲字段,实际判断次数等于空闲字段的字节数,因此当两个编码信息之间的空闲字段较长时,读码效率非常低下。因此通过一种快速、可靠的读码方法能快速确定编码信息之间空闲字段的长度,使读码效率不会因空闲字段字节长度变化而受到明显影响,在Asn. 1解码中显得尤为重要。
技术实现思路
本专利技术的目的是提供一种Asn. 1编码的快速读码方法,解决了现有读码过程中需要逐个判断字节是否为空闲字段的方法,能快速确定空闲字段的实际长度,大大提高了读码速度。本专利技术所采用的技术方案是,一种Asn. 1编码的快速读码方法,其特征在于,包括以下步骤步骤1、按照Asn. 1编码规则读取编码的标识符八位位组,并判读该八位位组是否为空闲字段,若不为空闲字段,则进入步骤2,否则,进入步骤3 ;步骤2、按照Asn. 1编码规则读取该编码信息的长度八位位组,以得到该编码信息的字节长度信息,再根据得到的字节长度信息,读取相应字节长度的编码信息后,返回步骤 1并读取下一条编码信息;步骤3、预设空闲字段字节长度D的初始值为一固定值L,读取该条编码信息的前L 个字节并判断读取的字节是否全部为空闲字段;若读取的字节不全部为空闲字段,则将预设空闲字段字节长度D的取值调整为L/q,再读取该编码信息的前L/q个字节并判断读取的字节是否全部为空闲字段;若读取的字节不全部为空闲字段,则将预设空闲字段字节长度 D的取值调整为L/2q,读取该编码信息的前L/2q个字节并判断读取的字节是否全部为空闲字段;依次类推,预设空闲字段字节长度D的取值的调整规律为依次呈倍数递减,直至读取的字节全部为空闲字段,此时预设空闲字段字节长度D取值L/nq,进入步骤4,其中,L、q和 η均为正整数,且L为q的倍数,η = 1,2,3...;步骤4、读取该条编码信息的前L/nq+d个字节并判断读取的字节是否全部为空闲字段;若读取的字节全部为空闲字段,则将预设空闲字段字节长度D的取值调整为L/ nq+2d,读取该条编码信息的前L/nq+2d个字节并判断读取的字节是否全部为空闲字段;若读取的字节全部为空闲字段,则将预设空闲字段字节长度D的取值调整为L/nq+3d,读取该条编码信息的前L/nq+3d个字节并判断读取的字节是否全部为空闲字段;依次类推,预设空闲字段字节长度D取值的调整规律为依次等差增加,直至读取的字节不全部为空闲字段,此时预设空闲字段字节长度D取值L/nq+md,进入步骤5,其中,m和d均为正整数,m = Ij 2 j 3 · · · ;步骤5、读取该条编码信息的前L/nq+(m-l)d+l个字节并判断读取的字节是否全部为空闲字段,若读取的字节全部为空闲字段,则将预设空闲字段字节长度D的取值调整为L/nq+(m-l)d+2,读取该条编码信息的前L/nq+(m-l)d+2个字节并判断读取的字节是否全部为空闲字段,若读取的字节全部为空闲字段,则将预设空闲字段字节长度D的取值调整为L/nq+ (m-1) d+3,依次类推,预设空闲字段字节长度D取值的调整规律为依次增加,直至读取的字节不全部为空闲字段,此时预设空闲字段字节长度D取值为L/nq+(m-l)d+Z,此时,确定实际空闲字段字节长度为L/nq+(m-1) d+ζ-Ι ;其中,ζ为正整数,ζ = 1,2,3...;步骤6、根据步骤5得到的实际空闲字段字节长度的数值,从上一条编码信息的最后一个字节开始跳过L/nq+(m-1) d+ζ-Ι个字节的空闲字段,再返回至步骤1读取下一条编码信息。步骤3中,q取值为2。本专利技术方法首先预设Asn. 1编码中相邻两条编码信息之间的空闲字段字节长度, 再根据读入字节是否为空闲字段,通过依次呈倍数递减和依次等差增加两种规则调整空闲字段字节长度,通过较少的读取判断次数最终确定实际的空闲字段字节长度,所需的判断次数与现有逐个字节判断次数相比大大减少,在空闲字段字节长度大时效果更加明显。因此,本专利技术方法简单,结果可靠,能很大程度提高Asn. 1编码的读码和解码速度。附图说明图1是利用本专利技术方法进行读码(L = 1024且d = 16)的字节判断次数示意图;图2是利用本专利技术方法进行读码(L = 512且d = 16)的字节判断次数示意图;图3是利用本专利技术方法进行读码(L = 1024且d = 8)的字节判断次数示意图。具体实施例方式下面结合附图和具体实施方式对本专利技术进行详细说明。Asn. 1编码信息的一个字节为一个八位位组,且第一个字节为标示符八位位组,第二个字节为标示该编码信息字节长度信息的长度八位位组。本专利技术方法首先按照Asn. 1编码规则读取编码的标识符八位位组,并判读该八位位组是否全部为0或F,若不全部为0或 F,则判断不是空闲字段而是编码信息,则进入步骤2,进入步骤2后,按照Asn. 1编码规则读取该编码信息的长度八位位组,得到该编码信息的字节长度信息,再根据得到的字节长度信息,读取相应字节长度的编码信息后,返回步骤1并读取下一条编码信息。如果该标识符八位位组全部为0或F,则判断为空闲字段,进入步骤3,在步骤3中预设空闲字段字节长度 D的初始值为一固定值,经过步骤3、步骤4和步骤5的数值调整,最终确定两条编码信息之间的实际空闲字段字节长度,在步骤6中,上一条编码信息的最后一个字节开始跳过相应长度的字节,再返回至步骤1读取下一条编码信息。实施例本实施例中空闲字段实际长度为546个字节,L = 1024,d = 16时,Asn. 1编码的快速读码方法为步骤1、按照Asn. 1编码规则读取编码的标识符八位位组,并判读该八位位组是否为空闲字段,若不为空闲字段,则进入步骤2,否则,进入步骤3 ;步骤2、按照Asn. 1编码规则读取该编码信息的长度八位位组,以得到该编码信息的字节长度信息,再根据得到的字节长度信息,读取相应字节长度的编码信息后,返回步骤 1并读取下一条编码信息;步骤3、预设空闲字段字节长度D为一固定值L,L = 1024,读取该条编码信息的前 1024个字节并判断读取的字节是否全部为空闲字段;由于读取的字节不全部为空闲字段, 将预设空闲字段字节长度D的取值调整为L/q,q = 2,L/q = 1024/2 = 512,再读取该编码信息的前512个字节并判断读本文档来自技高网...

【技术保护点】
1.一种Asn.1编码的快速读码方法,其特征在于,包括以下步骤:步骤1、按照Asn.1编码规则读取编码的标识符八位位组,并判读该八位位组是否为空闲字段,若不为空闲字段,则进入步骤2,否则,进入步骤3;步骤2、按照Asn.1编码规则读取该编码信息的长度八位位组,以得到该编码信息的字节长度信息,再根据得到的字节长度信息,读取相应字节长度的编码信息后,返回步骤1并读取下一条编码信息;步骤3、预设空闲字段字节长度D的初始值为一固定值L,读取该条编码信息的前L个字节并判断读取的字节是否全部为空闲字段;若读取的字节不全部为空闲字段,则将预设空闲字段字节长度D的取值调整为L/q,再读取该编码信息的前L/q个字节并判断读取的字节是否全部为空闲字段;若读取的字节不全部为空闲字段,则将预设空闲字段字节长度D的取值调整为L/2q,读取该编码信息的前L/2q个字节并判断读取的字节是否全部为空闲字段;依次类推,预设空闲字段字节长度D的取值的调整规律为依次呈倍数递减,直至读取的字节全部为空闲字段,此时预设空闲字段字节长度D取值L/nq,进入步骤4,其中,L、q和n均为正整数,且L为q的倍数,n=1,2,3...;步骤4、读取该条编码信息的前L/nq+d个字节并判断读取的字节是否全部为空闲字段;若读取的字节全部为空闲字段,则将预设空闲字段字节长度D的取值调整为L/nq+2d,读取该条编码信息的前L/nq+2d个字节并判断读取的字节是否全部为空闲字段;若读取的字节全部为空闲字段,则将预设空闲字段字节长度D的取值调整为L/nq+3d,读取该条编码信息的前L/nq+3d个字节并判断读取的字节是否全部为空闲字段;依次类推,预设空闲字段字节长度D取值的调整规律为依次等差增加,直至读取的字节不全部为空闲字段,此时预设空闲字段字节长度D取值L/nq+md,进入步骤5,其中,m和d均为正整数,m=1,2,3...;步骤5、读取该条编码信息的前L/nq+(m-1)d+1个字节并判断读取的字节是否全部为空闲字段,若读取的字节全部为空闲字段,则将预设空闲字段字节长度D的取值调整为L/nq+(m-1)d+2,读取该条编码信息的前L/nq+(m-1)d+2个字节并判断读取的字节是否全部为空闲字段,若读取的字节全部为空闲字段,则将预设空闲字段字节长度D的取值调整为L/nq+(m-1)d+3,依次类推,预设空闲字段字节长度D取值的调整规律为依次增加,直至读取的字节不全部为空闲字段,此时预设空闲字段字节长度D取值为L/nq+(m-1)d+z,此时,确定实际空闲字段字节长度为L/nq+(m-1)d+z-1;其中,z为正整数,z=1,2,3...;步骤6、根据步骤5得到的实际空闲字段字节长度的数值,从上一条编码信息的最后一个字节开始跳过L/nq+(m-1)d+z-1个字节的空闲字段,再返回至步骤1读取下一条编码信息。...

【技术特征摘要】

【专利技术属性】
技术研发人员:王林杨祎
申请(专利权)人:西安理工大学
类型:发明
国别省市:87

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1