CN101321177B - 一种扁平化码流节点及报文的扁平化码流编解码方法 - Google Patents
一种扁平化码流节点及报文的扁平化码流编解码方法 Download PDFInfo
- Publication number
- CN101321177B CN101321177B CN2008101416409A CN200810141640A CN101321177B CN 101321177 B CN101321177 B CN 101321177B CN 2008101416409 A CN2008101416409 A CN 2008101416409A CN 200810141640 A CN200810141640 A CN 200810141640A CN 101321177 B CN101321177 B CN 101321177B
- Authority
- CN
- China
- Prior art keywords
- code stream
- data
- flat code
- stream node
- message
- 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.)
- Active
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种扁平化码流节点及报文的扁平化码流编解码方法,所述扁平化码流节点包括名称、类型、索引、成员数及数据字段,各个字段间通过预设的第一标志符分隔,并且,所述扁平化码流节点的起始与结束通过预设的第二标志符标示。本发明所述技术方案实现了网管***对不同版本报文的兼容。
Description
技术领域
本发明涉及一种码流节点及报文的编解码方法,尤其是一种扁平化码流节点及报文的扁平化码流编解码方法。
背景技术
网管***中,ASN.1(Abstract Syntax Notation One,抽象语法标识)报文的传递有一个编码及解码的过程。编码时,将不同的ASN.1数据类型或结构编制成二进制码流;解码时,将二进制码流还原成具体的ASN.1数据类型或结构。
对ASN.1报文的编解码,目前业界普遍采用标准的BER(BasicEncoding Rules,基本编码规则)方式。BER方式的一个显著缺陷就是不能兼容不同版本的报文,同时,可扩展性也较差。实际应用中,ASN.1报文版本随着用户需求的不断变化而变化,这就需要网管***能够兼容报文的不同版本,但标准的BER方式无法实现。
发明内容
本发明要解决的技术问题是提供一种扁平化码流节点及报文的扁平化码流编解码方法,实现了网管***对不同版本报文的兼容。
本发明解决其技术问题所采用的技术方案是:
一种扁平化码流节点,包括名称、类型、索引、成员数及数据字段,各个字段间通过预设的第一标志符分隔,并且,所述扁平化码流节点的起始与结束通过预设的第二标志符标示。
上述方案中,所述数据字段包括报文长度字段及报文数据字段,所述报文长度字段为4个字节;所述扁平化码流节点的类型为BitString时,所述报文数据字段还包括4个字节的有效位字段。
一种报文的扁平化码流编码方法,包括以下步骤:
a、将报文编译成扁平化码流编码源数据;
b、采用结构体编码方法构造所述源数据中的结构体对应的扁平化码流节点;
c、依次构造所述结构体各个数据成员对应的扁平化码流节点,所述数据成员为结构体时,采用所述结构体编码方法构造其对应的扁平化码流节点,并将其所属的各个结构体对应的扁平化码流节点的成员数递增1;所述数据成员为基本数据类型数据时,采用基本数据类型数据编码方法构造其对应的扁平化码流节点,并将其所属的各个结构体对应的扁平化码流节点的成员数递增1。
上述方案中,所述结构体编码方法如下:构造一扁平化码流节点,所述扁平化码流节点的名称为所述结构体的名称;类型为空;所述结构体为其它结构体的数据成员时,索引为其在所述其它结构体数据成员中的位置值,否则,索引为负整数;成员数为0;数据字段中的报文数据为空,报文长度为0;所述名称、类型、索引、成员数及数据字段之间通过预设的第一标志符分隔,所述扁平化码流节点的起始与结束通过预设的第二标志符标示。
上述方案中,所述基本数据类型数据编码方法如下:构造一扁平化码流节点,所述扁平化码流节点的名称为所述基本数据类型数据的变量名称;类型为空或者所述基本数据类型;所述基本数据类型数据为结构体的数据成员时,索引为其在所述结构体数据成员中的位置值,否则,索引为负整数;成员数为0;数据字段中的报文数据为所述基本数据类型数据的业务数据,报文长度为所述报文数据所占的字节数;所述名称、类型、索引、成员数及数据字段之间通过预设的第一标志符分隔,所述扁平化码流节点的起始与结束通过预设的第二标志符标示。
上述方案中,所述基本数据类型为Bit String时,所述扁平化码流节点的类型为Bit String,并且,所述数据字段存在有效位字段,其值为所述报文数据所占的比特位数。
一种报文的扁平化码流解码方法,包括以下步骤:
A、确定扁平化码流对应的结构体及基本数据类型数据之间的关系;
B、将所述扁平化码流节点还原成对应的结构体或基本数据类型数据,并根据所述关系组织所述结构体及基本数据类型数据。
上述方案中,所述步骤B中,还原所述扁平化码流节点时,若所述扁平化码流节点的成员数不为0,直接将其还原成同一名称的结构体;若所述扁平化码流节点的成员数为0,根据其数据字段中的报文数据获取业务数据,并将其还原成同一名称的基本数据类型数据。
上述方案中,所述步骤A具体包括以下步骤:
A1、确定所述扁平化码流包含的扁平化码流节点;
A2、根据所述扁平化码流节点的索引及成员数确定所述扁平化码流对应的结构体数据及基本数据类型数据之间的关系。
上述方案中,所述步骤A1中,根据预设的第一标志符及第二标志符确定所述扁平化码流节点。
本发明的有益效果主要表现在:本发明提供的报文的扁平化码流编码方法将树状码流结构压缩成包含本发明所述的扁平化码流节点的扁平化码流,本发明提供的报文的扁平化码流解码方法通过码流节点名称的严格匹配,将上述扁平化码流恢复成树状码流结构,从而实现了网管***对不同版本报文的兼容,并且增强了编解码时码流节点的可扩展性。
附图说明
图1为本发明扁平化码流节点的结构示意图;
图2为本发明报文的扁平化码流编码流程图;
图3为本发明报文的扁平化码流解码流程图。
具体实施方式
下面结合附图对本发明作进一步的描述。
参照图1,一种扁平化码流节点,包括名称、类型、索引、成员数及数据字段,各个字段间通过预设的第一标志符,如“\0”分隔,并且,该扁平化码流节点的起始与结束通过预设的第二标志符标示,如采用对应的“{”及“}”分别标示该扁平化码流节点的起始与结束;扁平化码流节点的数据字段进一步包括报文长度字段及报文数据字段,报文长度字段为4个字节,并且,扁平化码流节点的类型为BitString时,报文数据字段还包括4个字节的有效位字段。
扁平化码流节点为报文扁平化码流的基本元素,作为第一标志符及第二标志符的符号不能在数据字段以外的其它字段出现。下面描述的报文的扁平化码流编码方法及报文的扁平化码流解码方法均是基于上述结构的扁平化码流节点。
参照图2,一种报文的扁平化码流编码方法,包括以下步骤:
S201:将报文编译成扁平化码流编码源数据;为了便于跟踪调试,可以同时将编译结果打印出来;
S202:采用结构体编码方法构造源数据根结构体对应的扁平化码流节点;根结构体即源数据树状码流结构的根节点;
S203:依次构造该结构体各个数据成员对应的扁平化码流节点,数据成员为结构体时,采用结构体编码方法构造其对应的扁平化码流节点,并将其所属的各个结构体对应的扁平化码流节点的成员数递增1;数据成员为基本数据类型数据时,采用基本数据类型数据编码方法构造其对应的扁平化码流节点,并将其所属的各个结构体对应的扁平化码流节点的成员数递增1。其中,基本数据类型数据包括Interger、Bit String、Boolean、long等数据类型。
上述流程中所述的结构体编码方法如下:
构造一扁平化码流节点,该扁平化码流节点的名称为结构体的名称;类型为空;结构体为其它结构体的数据成员时,索引为其在所述其它结构体数据成员中的位置值,否则,索引为负整数,可以取-1;成员数为0;数据字段中的报文数据为空,报文长度为0;名称、类型、索引、成员数及数据字段之间通过第一标志符分隔,该扁平化码流节点的起始与结束通过第二标志符标示。
上述流程中所述的基本数据类型数据编码方法如下:构造一扁平化码流节点,该扁平化码流节点的名称为该基本数据类型数据的变量名称;类型为空或者该基本数据类型;该基本数据类型数据为结构体数据的数据成员时,索引为其在结构体数据成员中的位置值,否则,索引为负整数,可以取-1;成员数为0;数据字段中的报文数据为所述基本数据类型数据的业务数据,报文长度为所述报文数据所占的字节数;名称、类型、索引、成员数及数据字段之间通过第一标志符分隔,该扁平化码流节点的起始与结束通过第二标志符标示。
进一步地,该基本数据类型为Bit String时,扁平化码流节点的类型字段不能为空,为Bit String,并且,其数据字段存在有效位字段,值为报文数据所占的比特位数。
参照图3,一种报文的扁平化码流解码方法,包括以下步骤:
S301:根据预设的第一标志符及第二标志符确定其包含的扁平化码流节点;
S302:根据扁平化码流节点的索引及成员数确定扁平化码流对应的结构体及基本数据类型数据之间的关系;
S303:将扁平化码流节点还原成对应的结构体或基本数据类型数据,并根据确定的关系组织结构体及基本数据类型数据;其中,还原扁平化码流节点时,若该扁平化码流节点的成员数不为0,即该扁平化码流节点对应结构体,本身的业务数据为空,因此,直接将其还原成同一名称的结构体;若该扁平化码流节点的成员数为0,即该扁平化码流节点对应基本数据类型数据,则根据其数据字段中的报文数据获取业务数据,并将其还原成同一名称的基本数据类型数据。
从上述描述中可以看出,解码过程中扁平化码流节点与其对应的结构体或基本数据类型数据的名称是严格匹配的,故不会出现解码错位的情况,从而实现了网管***对不同版本ASN.1报文的兼容。
下面以结构体A为源数据,对本发明所述的报文的扁平化码流编解码方法作进一步的描述,其中,结构体A的第一个数据成员为Interger数据i,第二个数据成员为结构体B;结构体B的第一个数据成员为Interger数据m,第二个数据成员为结构体C;结构体C的第一个数据成员为Interger数据n,第二个数据成员为Bit String数据p。
编码时,依次进行以下操作:
1、对结构体A进行编码,其对应的扁平化码流节点的名称为A;类型为空;索引为-1;成员数为0;数据字段的报文数据为空,报文长度为0;名称、类型、索引、成员数及数据字段之间通过“\0”分隔,该扁平化码流节点的起始及结束用对应的“{”“}”分别标示;
2、对结构体A的第一个数据成员——Interger数据i进行编码,其对应的扁平化码流节点的名称为i;类型为Interger;索引为0(表示i为结构体A的第一个数据成员,即从0开始标示结构体A各个数据成员的位置值);成员数为0;数据字段的报文数据为其业务数据的整型编码,报文长度为报文数据所占的字节数;名称、类型、索引、成员数及数据字段之间通过“\0”分隔,该扁平化码流节点的起始及结束用对应的“{”“}”分别标示;构造i对应的扁平化码流节点的同时,将其所属的结构体A对应的扁平化码流节点的成员数递增1;
3、对结构体A的第二个数据成员——结构体B进行编码,其对应的扁平化码流节点的名称为B;类型为空;索引为1(表示结构体B为结构体A的第二个数据成员);成员数为0;数据字段的报文数据为空,报文长度为0;名称、类型、索引、成员数及数据字段之间通过“\0”分隔,该扁平化码流节点的起始及结束用对应的“{”“}”分别标示;构造结构体B对应的扁平化码流节点的同时,将其所属的结构体A对应的扁平化码流节点的成员数递增1;
4、对结构体B的第一个数据成员——Interger数据m进行编码,其对应的扁平化码流节点的名称为m;类型为Interger;索引为0(表示m为结构体B的第一个数据成员,即从0开始标示结构体B各个数据成员的位置值);成员数为0;数据字段的报文数据为其业务数据的整型编码,报文长度为报文数据所占的字节数;名称、类型、索引、成员数及数据字段之间通过“\0”分隔,该扁平化码流节点的起始及结束用对应的“{”“}”分别标示;构造m对应的扁平化码流节点的同时,将其所属的结构体A及结构体B对应的扁平化码流节点的成员数分别递增1;
5、对结构体B的第二个数据成员——结构体C进行编码,其对应的扁平化码流节点的名称为C;类型为空;索引为1(表示结构体C为结构体B的第二个数据成员);成员数为0;数据字段的报文数据为空,报文长度为0;名称、类型、索引、成员数及数据字段之间通过“\0”分隔,该扁平化码流节点的起始及结束用对应的“{”“}”分别标示;构造结构体C对应的扁平化码流节点的同时,将其所属的结构体A及结构体B对应的扁平化码流节点的成员数分别递增1;
6、对结构体C的第一个数据成员——Interger数据n进行编码,其对应的扁平化码流节点的名称为n;类型为Interger;索引为0(表示n为结构体C的第一个数据成员,即从0开始标示结构体C各个数据成员的位置值);成员数为0;数据字段的报文数据为其业务数据的整型编码,报文长度为报文数据所占的字节数;名称、类型、索引、成员数及数据字段之间通过“\0”分隔,该扁平化码流节点的起始及结束用对应的“{”“}”分别标示;构造n对应的扁平化码流节点的同时,将其所属的结构体A、结构体B及结构体C对应的扁平化码流节点的成员数分别递增1;
7、对结构体C的第二个数据成员——Bit String数据p进行编码,其对应的扁平化码流节点的名称为p;类型为Bit String;索引为1(表示p为结构体C的第二个数据成员);成员数为0;数据字段的报文数据为其业务数据的字节编码,报文长度为报文数据所占的字节数,有效位为报文数据所占的比特位数;名称、类型、索引、成员数及数据字段之间通过“\0”分隔,该扁平化码流节点的起始及结束用对应的“{”“}”分别标示;构造p对应的扁平化码流节点的同时,将其所属的结构体A、结构体B及结构体C对应的扁平化码流节点的成员数分别递增1。
至此该源数据的扁平化码流编码结束,此时,结构体A、结构体B及结构体C对应的扁平化码流节点的成员数分别为6、4及2。
在对其进行解码的过程中,根据图3所示的流程进行,通过对扁平化码流节点与其对应的结构体或基本数据类型数据名称的严格匹配,实现了网管***对不同版本报文的兼容。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (4)
1.一种报文的扁平化码流编码方法,其特征在于,包括以下步骤:
a、将报文编译成扁平化码流编码源数据;
b、采用结构体编码方法构造所述源数据根结构体对应的扁平化码流节点;所述结构体编码方法如下:构造一扁平化码流节点,所述扁平化码流节点的名称为所述结构体的名称;类型为空;所述结构体为其它结构体的数据成员时,索引为其在所述其它结构体数据成员中的位置值,否则,索引为负整数;成员数为0;数据字段中的报文数据为空,报文长度为0;所述名称、类型、索引、成员数及数据字段之间通过预设的第一标志符分隔,所述扁平化码流节点的起始与结束通过预设的第二标志符标示;
c、依次构造所述结构体各个数据成员对应的扁平化码流节点,所述数据成员为结构体时,采用所述结构体编码方法构造其对应的扁平化码流节点,并将其所属的各个结构体对应的扁平化码流节点的成员数递增1;所述数据成员为基本数据类型数据时,采用基本数据类型数据编码方法构造其对应的扁平化码流节点,并将其所属的各个结构体对应的扁平化码流节点的成员数递增1;所述基本数据类型数据编码方法如下:构造一扁平化码流节点,所述扁平化码流节点的名称为所述基本数据类型数据的变量名称;类型为空或者所述基本数据类型;所述基本数据类型数据为结构体的数据成员时,索引为其在所述结构体数据成员中的位置值,否则,索引为负整数;成员数为0;数据字段中的报文数据为所述基本数据类型数据的业务数据,报文长度为所述报文数据所占的字节数;所述名称、类型、索引、成员数及数据字段之间通过预设的第一标志符分隔,所述扁平化码流节点的起始与结束通过预设的第二标志符标示。
2.如权利要求1所述的报文的扁平化码流编码方法,其特征在于:所述基本数据类型为Bit String时,所述扁平化码流节点的类型为Bit String,并且,所述数据字段存在有效位字段,其值为所述报文数据所占的比特位数。
3.一种报文的扁平化码流解码方法,其特征在于,包括以下步骤:
A、确定扁平化码流对应的结构体及基本数据类型数据之间的关系;所述步骤A具体包括以下步骤:
A1、确定所述扁平化码流包含的扁平化码流节点;
A2、根据所述扁平化码流节点的索引及成员数确定所述扁平化码流对应的结构体数据及基本数据类型数据之间的关系;
B、将所述扁平化码流节点还原成对应的结构体或基本数据类型数据,并根据所述关系组织所述结构体及基本数据类型数据;所述步骤B中,还原所述扁平化码流节点时,若所述扁平化码流节点的成员数不为0,直接将其还原成同一名称的结构体;若所述扁平化码流节点的成员数为0,根据其数据字段中的报文数据获取业务数据,并将其还原成同一名称的基本数据类型数据。
4.如权利要求3所述的报文的扁平化码流解码方法,其特征在于:所述步骤A1中,根据预设的第一标志符及第二标志符确定所述扁平化码流节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101416409A CN101321177B (zh) | 2008-07-18 | 2008-07-18 | 一种扁平化码流节点及报文的扁平化码流编解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101416409A CN101321177B (zh) | 2008-07-18 | 2008-07-18 | 一种扁平化码流节点及报文的扁平化码流编解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101321177A CN101321177A (zh) | 2008-12-10 |
CN101321177B true CN101321177B (zh) | 2011-06-22 |
Family
ID=40180995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101416409A Active CN101321177B (zh) | 2008-07-18 | 2008-07-18 | 一种扁平化码流节点及报文的扁平化码流编解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101321177B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104717032B (zh) * | 2013-12-14 | 2018-05-08 | 中国航空工业集团公司第六三一研究所 | 一种适用于afdx网络数据透明传输的编解码方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1635763A (zh) * | 2003-12-26 | 2005-07-06 | 中国电子科技集团公司第三十研究所 | 用于抽象句法表示法高层应用的通用编解码方法 |
WO2006041259A1 (en) * | 2004-10-13 | 2006-04-20 | Electronics And Telecommunications Research Institute | Method and apparatus for encoding/decoding point sequences on laser binary representation |
CN1851701A (zh) * | 2005-11-29 | 2006-10-25 | 华为技术有限公司 | 一种二进制数据的访问方法 |
CN101001160A (zh) * | 2006-12-30 | 2007-07-18 | 华为技术有限公司 | 一种编码方法和编码器 |
-
2008
- 2008-07-18 CN CN2008101416409A patent/CN101321177B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1635763A (zh) * | 2003-12-26 | 2005-07-06 | 中国电子科技集团公司第三十研究所 | 用于抽象句法表示法高层应用的通用编解码方法 |
WO2006041259A1 (en) * | 2004-10-13 | 2006-04-20 | Electronics And Telecommunications Research Institute | Method and apparatus for encoding/decoding point sequences on laser binary representation |
CN1851701A (zh) * | 2005-11-29 | 2006-10-25 | 华为技术有限公司 | 一种二进制数据的访问方法 |
CN101001160A (zh) * | 2006-12-30 | 2007-07-18 | 华为技术有限公司 | 一种编码方法和编码器 |
Also Published As
Publication number | Publication date |
---|---|
CN101321177A (zh) | 2008-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5818369A (en) | Rapid entropy coding for data compression or decompression | |
RU2595916C1 (ru) | Кодер, декодер и способ | |
CN101179580B (zh) | 一种用于实现WiMAX***消息编解码的方法 | |
Bertoni et al. | Sakura: a flexible coding for tree hashing | |
US20100211867A1 (en) | Processing module, a device, and a method for processing of xml data | |
CN103152054B (zh) | 算术编码的方法和设备 | |
CN101651683A (zh) | 一种信令消息解析源代码生成方法 | |
CN101316241A (zh) | 用于通信数据的tlv格式处理方法 | |
CN101163148B (zh) | 支持非标准速率的以太网传输方法及相应装置和接入设备 | |
CN102761543B (zh) | 一种实现sip协议通用编解码的方法和装置 | |
CN101321177B (zh) | 一种扁平化码流节点及报文的扁平化码流编解码方法 | |
WO2017157023A1 (zh) | 一种soap报文传输方法及*** | |
CN100518171C (zh) | 用于抽象句法表示法高层应用的通用编解码方法 | |
CN104767710B (zh) | 基于dfa的http分块传输编码的传输载荷提取方法 | |
CN109428676B (zh) | 一种前向纠错编解码模式的同步方法及装置 | |
CN100456753C (zh) | 一种消息匹配的方法及*** | |
CN116208667B (zh) | 一种可变长高压缩的比特报文编解码方法 | |
CN103595503B (zh) | 一种基于串口装置的频率编解码通讯*** | |
CN103716127B (zh) | 一种基于ttcn‑3的压缩编解码的方法和*** | |
CN104717032A (zh) | 一种适用于afdx网络数据透明传输的编解码方法 | |
US20140337522A1 (en) | Method and Device for Filtering Network Traffic | |
CN102844988B (zh) | 线路编码的方法及装置 | |
CN103631983A (zh) | 一种战术数据报文模拟方法及*** | |
CN105099571B (zh) | 一种音频通信方法 | |
US6111660A (en) | Efficient digital data encoding in a data processing system |
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 |