CN1635763A - 用于抽象句法表示法高层应用的通用编解码方法 - Google Patents

用于抽象句法表示法高层应用的通用编解码方法 Download PDF

Info

Publication number
CN1635763A
CN1635763A CN 200310104144 CN200310104144A CN1635763A CN 1635763 A CN1635763 A CN 1635763A CN 200310104144 CN200310104144 CN 200310104144 CN 200310104144 A CN200310104144 A CN 200310104144A CN 1635763 A CN1635763 A CN 1635763A
Authority
CN
China
Prior art keywords
binary tree
asn
coding
data
string
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 200310104144
Other languages
English (en)
Other versions
CN100518171C (zh
Inventor
王文胜
唐林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 30 Research Institute
Original Assignee
CETC 30 Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CETC 30 Research Institute filed Critical CETC 30 Research Institute
Priority to CNB2003101041443A priority Critical patent/CN100518171C/zh
Publication of CN1635763A publication Critical patent/CN1635763A/zh
Application granted granted Critical
Publication of CN100518171C publication Critical patent/CN100518171C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Communication Control (AREA)

Abstract

用于ASN.1高层应用的通用编解码方法,编码过程如下:根据高层应用协议基于ASN.1的数据类型和关系,构建编码格式串,利用格式串生成相应空值的二叉树结构,然后根据需要参照应用的操作编码定义向结构中插值,最后遍历二叉树生成二进制信息流数据;解码过程如下:根据编码格式串生成收到ASN.1编码信息的二叉树数据结构,然后根据二叉树的遍历的反向过程解码,并把数据赋给数据结构中,业务逻辑再通过二叉树的节点查询来取得数据信息。以此方法实现ASN.1的编码和解码,可以适应于所有符合ASN.1描述的应用,具有简单、灵活、高效、适应性和可扩展性好等特点。

Description

用于抽象句法表示法高层应用的通用编解码方法
技术领域
本发明涉及数字通信编解码领域,具体涉及用于ASN.1高层应用的编、解码方法。
背景技术
ASN.1(抽象句法表示法)广泛应用于信息系统高层应用通信信息格式编码,如INAP、SNMP、H.323等,信息格式利用ASN.1抽象记法进行解释和编码,具有三个特点:一是结构化,某一参数只是上级参数的一个子项,它也可以包含更低子项,具有树状结构;二是内容不定,因为存在选择项,这就要求我们不能用预制的格式填写;三是参数长度不定。能否正确、快速、自适应地对采用ASN.1规程的通信信息进行编解码,是智能网、网管等处理的关键和一大难点,也是诸多高层应用标准化的一个保证,现在一般的ASN.1的编码方法采用固定参数或简单查表的机制,根据特定的消息编写特定的编、解码程序,这样的做法工作量大,容易出现不完整、不一致的情况,难以实现模块级的重用,尤其是当信息流编码需要变化的时候,必须修改相应的编解码程序本身才能解决,这样的实现方法灵活性和适应性较差。查到相关专利:“将抽象句法表示法1数据模型化成对象模型的方法及系统”(公开号:1359065,申请号:01143625.5,申请人:国际商业机器公司,发明人:张晓燕等),该方法只能用于分析ASN.1数据流,不具备完整的编码和解码能力。
发明内容
本发明的目的是提供一种用于ASN.1高层应用的通用编、解码方法,可以实现ASN.1信息的编码和解码,可以适应于所有符合ASN.1描述的应用,具有简单、灵活、高效、完整、适应性和可扩展性好的特点。
为了达到上述目的,本发明用于ASN.1高层应用的通用编、解码方法包括两部分,编码方法和解码方法。
编码方法包括以下步骤:(1)根据高层应用协议基于ASN.1的数据类型和关系,构建操作信息编码格式串;(2)利用二叉树数据结构来表示该操作信息编码格式串;(3)对数据项定位,并根据需要参照应用的操作编码定义向数据结构中插值对数据项进行定位赋值;(4)根据二叉树的遍历来进行编码,生成基于ASN.1描述应用协议消息中的操作编码。
解码方法包括以下步骤:(1)根据所收到的基于ASN.1描述应用协议消息中的操作编码,结合构建的格式串,生成二叉树据结构;(2)根据二叉树的遍历的反向过程进行解码,寻找数据项信息,并自动生成定位串;(3)根据定位串把解码获得的数据赋值到二叉树数据结构中;(4)通过二叉树的节点查询来取得原操作信息。
本发明采用了二叉树数据结构来表示ASN.1信息,完全适应ASN.1编码结构化、内容不定、参数长度不定的特点的要求,以此方法实现ASN.1的编码和解码,可以适应于所有符合ASN.1描述的应用,具有简单、灵活、高效、适应性和可扩展性好的特点,可以把高层应用的设计与底层通信信息编码分开,具有较大的灵活性,可大大提高高层应用规程和应用开发的效率。
附图说明
图1是ASN.1编解码方法的接口需求示意图
图2是ASN.1信息编码方法流程框图
图3是ASN.1信息解码方法流程框图
图4是格式串的编写示意图
图5是初始二叉树创建的流程图
图6是二叉树定位串定位算法流程图
图7是基于ASN.1的INAP的‘计费事件通知’编码的二叉树结构表示图
图8是编码递归流程图
图9是解码递归流程图
具体实施方式
下面结合附图详细说明本发明的编、解码方法。
图1为ASN.1编解码方法的接口需求示意图,为了适应信息系统业务上层参数多点读写的特点,我们定义一个编解码器来实现ASN.1编解码,接口需求如图1所示,当业务上层需要发送ASN.1信息时,首先向编码器申请初始化某条信息,编码器根据ASN.1编码库构建一个包含特定信息完整编码格式和缺省值的的一个实例,业务上层随后可以多次、重复地设定各编码参数,最后发出编码指令,编码器利用得到的参数编写出一条完整、标准的ASN.1信息。当解码器收到ASN.1前端处理模块转来的标准ASN.1信息时,解码完成后生成一个规则的、方便读取的数据结构实体,以供业务上层析取数据。
图2为ASN.1信息编码方法流程框图,首先将ASN.1信息生成二叉树数据结构,然后定位对二叉树数据项进行赋值,赋值完成后进行编码递归流程生成ASN.1编码信息。
图3为ASN.1信息解码方法流程框图,首先将接收到的ASN.1编码信息生成二叉树数据结构,然后通过解码递归流程取得原消息数据,并将数据填入二叉树相应的节点,最后通过二叉树取值获得原消息。
图4为格式串的编写示意图,为了使编解码方法满足ASN.1编码的结构化、内容不定、参数长度不定的特点和接口的要求,做到通用性,首先我们根据高层应用通信规程操作定义写出操作格式串,由格式串再生成编码二叉树数据结构,格式串的编写按照图4所示的编码规则进行,编码二叉树的生成必须依据标准定义而产生的二叉树格式串,二叉树格式串能够描述所对应的操作的每一个数据项,并能指明数据项的相互包含位置关系,完整充分的二叉树格式串才能产生准确的操作二叉树。在二叉树格式串的定义中,每一个数据项的格式如下:[[标签码],[类型],[包含关系长度(缺省值)]];其中,若标签码是原编码则第三项是‘长度(缺省值)’,标签码是构造编码则第三项是‘包含关系’。其中,标签码是根据CCITT的X.209建议来定值,类型为一个字节如下
  H   G   F   E   D   C   B   A
(H:固定长度标志;G:缺省值标志;F:显式长度说明(G=1或H=1时有效)标志;E:选择项标志;DCBA:数据类型);包含子项数目是一个字节表示此构造编码内含多少个次级标签码;长度为原编码的数据长度;缺省值为标准定义的缺省值。
图5为初始二叉树的创建流程图,格式串编写完成后,就可以根据格式串和二叉树的生成算法创建操作二叉树,二叉树的生成算法是一个典型的递归算法,具体流程如图5所示,执行的时候首先判断标签计数器的大小,当计数器<0表明二叉树构造完成;当计数器>=0执行读入格式串,利用格式串中每一项的标签码确定这一项是原编码还是构造编码;如果是原编码就直接生成原编码节点,在构造编码的情况下,除了生成构造编码节点还要递归地生成本构造编码节点的次级节点;然后标签计数器递减,指向左指针,循环进行前面的构造过程。关于二叉树节点的动作、指针的拨动都是根据基本的二叉树节点操作而行,根据此流程图,我们可以得到一个准确反映相应操作的二叉树数据结构。
图6为二叉树定位串定位算法流程图,生成二叉树数据结构后,就要对数据项进行定位赋值,数据项的定位必须简单可靠而不会产生歧义,现采用的是如下办法,设置定位串,以ASN.1文本描述中各项的序号序列作为定位串,业务逻辑程序靠定位串定位进行数据项的存取,这是为了方便业务逻辑程序员根据《智能网应用规程(INAP)》等基于ASN.1的高层应用中关于操作的编码定义形式来存取二叉树的数据。定位串的设计形式为:(X0,X1,...Xi...Xn),根据定位串进行二叉树的定位的流程如图6所示,程序入口参数为定位串(X0,X1,...Xi...Xn)和根节点root,从root节点开始,程序首先用走左指针的方式根据X0值定位节点在第0层次中的位置,再走一次右指针进入第1层次,然后根据X1值走左指针定位节点在第1层次中的位置,重复以上过程,直到定位到节点在最后一个层次(第n层次)的位置Xn,最后将节点指针作为输出,结束流程。
图7为基于ASN.1的INAP的‘计费事件通知’编码的二叉树结构表示图,我们用一个实例来说明编码的二叉树数据结构表示,基于ASN.1的INAP的‘计费事件通知’编码的序列如下:
序列{
.计费事件类型[0]隐含八位位组(范围??..??)
.计费事件规定的信息[1]隐含八位位组(范围??..??)选择项
.LegID[2]选择{
..收方ID[1]隐含八位位组(范围??..??)}选择项
.扩展[3]隐含序列(范围(1..??))个序列{
..类型整数
..准则枚举{忽略(0),放弃(1)}缺省值忽略,
..值[1]任何类型定义的值}选择项
.监视方式[30]隐含枚举{中断(0),通知且继续(1),透明(2)}缺省值1}上述‘计费事件通知’编码的二叉树结构表示如图7所示,每个二叉树节点表示编码的一项,左指针指向同一层节点的下一个节点,右指针指向下一层次的第一个节点,‘计费事件通知’操作中,‘准则’的定位串为(3,1)即在二叉树中从root节点起,先向左指针走三次,走右指针一次,再左指针一次即可。
图8为编码递归流程图,业务逻辑程序根据定位串,并根据需要参照应用的操作编码定义向数据结构中插值对数据项进行定位赋值,赋值完成后就可以进行编码,编码的递归流程如图8所示(其中Len为数据长度,Slen为数据项长度),入口参数为节点指针P,开始进行步骤101,判断节点指针是否为空,如果是则完成编码递归流程并返回;如果不为空则进行步骤102,判断节点指针P的右指针是否为空;如果不为空,则进行步骤103,写入标签码;接着进行步骤104,将节点指针P的右指针赋值给数据项长度参数Slen,做为递归调用入口参数;接着进行步骤105,写入参数Slen;如果节点指针P的右指针为空则进行步骤106,写入标签码;接着进行步骤107,写入数据;接着进行步骤108,写入数据项长度Slen;完成步骤105或步骤108后,进行步骤109,将数据长度Len与数据项长度Slen相加并赋值给数据长度参数Len,将节点指针的左指针赋值给节点指针,返回步骤101,进行循环,直到完成编码递归流程。编码流程采用的是一个二叉树的先序遍历流程:访问二叉树每一个节点,根据节点性质(标签码),进行原编码或将其右指针(指向下一层次的第一节点)作为递归调用入口参数以进行构造编码。经过编码递归流程处理后写入Buffer(缓存器)的信息就是我们所需要的完整的基于ASN.1的消息编码码字。
图9为解码递归流程图,解码是把完整的基于ASN.1的高层协议消息分解,把数据取出后放入根据格式串构造的二叉树中相应节点中以提供给业务逻辑使用的一个过程。首先将收到的前端处理模块转来的标准ASN.1信息结合格式串生成二叉树数据结构,然后根据二叉树的先序遍历的反向过程解码,解码递归流程如图9所示(其中Len为数据长度,Slen为数据项长度),入口参数为数据长度(Len)、定位串(PlaceStr)、数据项深度(n),开始进行步骤201判断数据长度(Len)是否大于零,如果不是则完成解码递归流程并返回;如果大于零则进行步骤202,读入一编码项(标签码,长度Slen)和定位串PlaceStr[n]++;再进行步骤203,根据编码项的标签码判断该编码项是否为原编码,如果是则进行步骤204,将数据读入并放入二叉树结构中;如果不是则进行步骤205,将数据项深度n递增1后和数据项长度Slen、定位串PlaceStr一起作为递归调用入口参数;完成步骤204或205后,进行步骤206,将数据长度Len减去编码项长度Slen并减2赋给数据长度参数Len,返回步骤201,进行循环直到完成解码递归流程。解码主要是根据编码的规则递归深入寻找消息中的数据项信息,在递归过程中自动生成该数据项的定位串,再根据定位串把找到的数据放入二叉树中相应的节点中,业务逻辑再通过对二叉树的节点查询来取得原消息的数据,完成解码过程。

Claims (6)

1、一种用于ASN.1高层应用的通用编码方法,包括以下步骤:(1)根据高层应用协议基于ASN.1的数据类型和关系,构建操作信息编码格式串;(2)利用二叉树数据结构来表示该操作信息编码格式串;(3)对数据项定位,并根据需要参照应用的操作编码定义向数据结构中插值对数据项进行定位赋值;(4)根据二叉树的遍历来进行编码,生成基于ASN.1描述应用协议消息中的操作编码。
2、根据权利要求1所述的用于ASN.1高层应用的通用编码方法,其特征在于,所构建的操作信息编码格式串中,每一个数据项的格式如下:[[标签码],[类型],[包含关系|长度(缺省值)]],其中,若标签码是原编码,则第三项是‘长度(缺省值)’,标签码是构造编码,则第三项是‘包含关系’。
3、根据权利要求1所述的用于ASN.1高层应用的通用编码方法,其特征在于,步骤(2)中生成的二叉树数据结构中,每个二叉树节点表示编码的一项,左指针指向同一层节点的下一个节点,右指针指向下一层次的第一个节点。
4、根据权利要求1所述的用于ASN.1高层应用的通用编码方法,其特征在于,步骤(3)中对数据项定位采用设置定位串的方法,以ASN.1文本描述中各项的序号序列作为定位串。
5、根据权利要求1所述的用于ASN.1高层应用的通用编码方法,其特征在于,步骤(4)中采用的是二叉树的先序遍历来进行编码。
6、一种用于ASN.1高层应用的通用解码方法,包括以下步骤:(1)根据所收到的基于ASN.1描述应用协议消息中的操作编码,结合构建的格式串,生成二叉树数据结构;(2)根据二叉树的遍历的反向过程进行解码,寻找数据项信息,并自动生成定位串;(3)根据定位串把解码获得的数据赋值到二叉树数据结构中;(4)通过二叉树的节点查询来取得原操作信息。
CNB2003101041443A 2003-12-26 2003-12-26 用于抽象句法表示法高层应用的通用编解码方法 Expired - Lifetime CN100518171C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2003101041443A CN100518171C (zh) 2003-12-26 2003-12-26 用于抽象句法表示法高层应用的通用编解码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2003101041443A CN100518171C (zh) 2003-12-26 2003-12-26 用于抽象句法表示法高层应用的通用编解码方法

Publications (2)

Publication Number Publication Date
CN1635763A true CN1635763A (zh) 2005-07-06
CN100518171C CN100518171C (zh) 2009-07-22

Family

ID=34842965

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003101041443A Expired - Lifetime CN100518171C (zh) 2003-12-26 2003-12-26 用于抽象句法表示法高层应用的通用编解码方法

Country Status (1)

Country Link
CN (1) CN100518171C (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1859359B (zh) * 2005-07-12 2010-08-25 上海华为技术有限公司 用抽象语法规则描述的通信协议的实现方法及其装置
CN101268697B (zh) * 2005-07-20 2010-12-29 数码士有限公司 编码器和解码器
CN101321177B (zh) * 2008-07-18 2011-06-22 中兴通讯股份有限公司 一种扁平化码流节点及报文的扁平化码流编解码方法
CN102332018A (zh) * 2011-09-21 2012-01-25 西安理工大学 一种Asn.1编码的快速读码方法
CN101370003B (zh) * 2007-08-14 2012-08-08 大唐移动通信设备有限公司 用于定制通讯协议的方法和装置、转换通讯协议描述的方法和装置
CN103036877A (zh) * 2012-12-10 2013-04-10 北京中创信测科技股份有限公司 一种基于tlv格式协议的编解码代码生成装置及方法
CN103973311A (zh) * 2014-04-11 2014-08-06 北京工业大学 一种对变长二值化描述子的快速编解码算法
CN104320218A (zh) * 2014-10-30 2015-01-28 北京思特奇信息技术股份有限公司 一种便捷dcc消息编解码系统及方法
CN105139053A (zh) * 2015-10-15 2015-12-09 江苏本能科技有限公司 射频识别读写器接口协议调试装置及方法
CN106657149A (zh) * 2017-01-24 2017-05-10 恒生电子股份有限公司 通讯协议转换方法与装置
CN112188211A (zh) * 2020-08-21 2021-01-05 北京新媒传信科技有限公司 一种转码实现方法和装置
CN112685297A (zh) * 2020-12-25 2021-04-20 科讯嘉联信息技术有限公司 一种电话客服机器人话术流程自动测试方法

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1859359B (zh) * 2005-07-12 2010-08-25 上海华为技术有限公司 用抽象语法规则描述的通信协议的实现方法及其装置
CN101268697B (zh) * 2005-07-20 2010-12-29 数码士有限公司 编码器和解码器
CN101370003B (zh) * 2007-08-14 2012-08-08 大唐移动通信设备有限公司 用于定制通讯协议的方法和装置、转换通讯协议描述的方法和装置
CN101321177B (zh) * 2008-07-18 2011-06-22 中兴通讯股份有限公司 一种扁平化码流节点及报文的扁平化码流编解码方法
CN102332018A (zh) * 2011-09-21 2012-01-25 西安理工大学 一种Asn.1编码的快速读码方法
CN102332018B (zh) * 2011-09-21 2013-10-23 西安理工大学 一种Asn.1编码的快速读码方法
CN103036877A (zh) * 2012-12-10 2013-04-10 北京中创信测科技股份有限公司 一种基于tlv格式协议的编解码代码生成装置及方法
CN103973311A (zh) * 2014-04-11 2014-08-06 北京工业大学 一种对变长二值化描述子的快速编解码算法
CN104320218A (zh) * 2014-10-30 2015-01-28 北京思特奇信息技术股份有限公司 一种便捷dcc消息编解码系统及方法
CN104320218B (zh) * 2014-10-30 2018-01-09 北京思特奇信息技术股份有限公司 一种便捷dcc消息编解码系统及方法
CN105139053A (zh) * 2015-10-15 2015-12-09 江苏本能科技有限公司 射频识别读写器接口协议调试装置及方法
CN105139053B (zh) * 2015-10-15 2018-01-30 江苏本能科技有限公司 射频识别读写器接口协议调试装置及方法
CN106657149A (zh) * 2017-01-24 2017-05-10 恒生电子股份有限公司 通讯协议转换方法与装置
CN106657149B (zh) * 2017-01-24 2020-03-17 恒生电子股份有限公司 通讯协议转换方法与装置
CN112188211A (zh) * 2020-08-21 2021-01-05 北京新媒传信科技有限公司 一种转码实现方法和装置
CN112685297A (zh) * 2020-12-25 2021-04-20 科讯嘉联信息技术有限公司 一种电话客服机器人话术流程自动测试方法
CN112685297B (zh) * 2020-12-25 2022-11-29 科讯嘉联信息技术有限公司 一种电话客服机器人话术流程自动测试方法

Also Published As

Publication number Publication date
CN100518171C (zh) 2009-07-22

Similar Documents

Publication Publication Date Title
CN100518171C (zh) 用于抽象句法表示法高层应用的通用编解码方法
KR100233972B1 (ko) 기하학적 모델을 압축 및 압축해제하는 컴퓨터 시스템과 압축 및압축해제
CN111699696A (zh) 用于对字节流进行编码和解码的方法和设备
CN1669024A (zh) 结构化文档、尤其xml文档的编码/译码的方法和装置
CN1979485A (zh) 在门户中有效处理导航状态的方法和系统
CN101841515A (zh) 可变目标的协议数据单元编解码代码自动生成的实现方法
JP2808672B2 (ja) オブジェクト指向言語のクラスを用いるメリッド決定方法
CN1653418A (zh) 向作为不同类实例的对象提供通用内存管理代码
CN109460220A (zh) 报文预定义代码生成方法、装置、电子设备和存储介质
CN100397397C (zh) 基于关系数据库的xml数据存储与访问方法
CN1296834C (zh) 编程对象简化的内存重新分配方法
CN110060158A (zh) 基于变长编码的智能合约执行方法和装置
CN114492316B (zh) 数据交换编解码方法和系统
CN101179580B (zh) 一种用于实现WiMAX系统消息编解码的方法
CN111625218A (zh) 一种自定义库开发的大数据处理方法及系统
CN1317868C (zh) 一种基于类模板管理器的通讯报文处理设备和方法
CN100558166C (zh) 一种图形终端界面的编码和解码方法
CN103092607A (zh) 一种电信话单数据编解码方法
CN1525714A (zh) 一种asn.1协议处理器
Pope Encoding CCITT X. 409 presentation transfer syntax
CN1243320C (zh) 数据源合成的方法
CN115412713B (zh) 一种点云深度信息的预测编解码方法及装置
CN115147697B (zh) 深度学习多任务特征编码方法及其系统
CN111913714B (zh) 一种基于Thrift的变电站站控层通讯服务映射方法及装置
CN101321177B (zh) 一种扁平化码流节点及报文的扁平化码流编解码方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20090722