CN107025125B - 一种原始码流解码方法和系统 - Google Patents
一种原始码流解码方法和系统 Download PDFInfo
- Publication number
- CN107025125B CN107025125B CN201610067318.0A CN201610067318A CN107025125B CN 107025125 B CN107025125 B CN 107025125B CN 201610067318 A CN201610067318 A CN 201610067318A CN 107025125 B CN107025125 B CN 107025125B
- Authority
- CN
- China
- Prior art keywords
- field
- source code
- code flow
- offset
- attribute information
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种原始码流解码方法和系统,其中该方法包括:将当前所使用解码库的字段属性信息写入配置文件中;读取配置文件,加载字段属性信息至内存;接收用户端的原始码流;按照字段属性信息依序遍历并解析原始码流字段;根据用户需求格式化输出解析结果。本发明将码流数据结构信息,与程序完全解藕,若要获取字段值,只要配置文件进行简单的修改即可,有利于新手快速参与到项目中来,同时代码行将不随字段多少,而线性增加。而且不要需要强制转换数据结构,利用指针按字节(单位),利用偏移量依次访问原始码流,在频繁解码过程中,可以有效提高解码速率,代码行比较稳定,不会随需求变更,产生大的变迁。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种原始码流解码方法。
背景技术
处理原始码流,是通信领域非常重要的环节。解析原始码流的过程比较繁琐,对于大型程序解码原始码流而言,不仅要求解码精确,而且也要保证实时性,当然,代码行越少越好。现有的一些的解码方法中,主要是先将原始码流强制转换成当前码流数据结构,然后按字段对齐的方式取出相应的字段。例如,要从原始码流unsigned char*msg中提取字段“unsigned short subframeAssignment”,相关解码库数据结如下(实际情况比这个结构体,要复杂),此处简化,只是为了表达思想:
从原始码流unsigned char*msg,提取字段“unsigned shortsubframeAssignment”的方法如下:由于unsigned char*msg是结构嵌结构体,强制转换之后,需要一层一层的解剖数据结构,如果新增一个字段求值,会增加同数量级的代码行,甚至更多。如果格式化输出,还需要进一步的工作。例如输出格式为:“字段名:字段值….”等类似信息,则需要程序做额外的格式化工作。
现有的原始码流解码方案(msg为原始码流),是一层一层的取字段,以获取“PDU消息:BCCH_DL_SCH_Message”中的字段“subframeAssignment”为例,过程如下:(1)、解析结构体:BCCH_DL_SCH_MessageType;(2)、解析结构体:SystemInformationBlockType1;(3)、解析结构体:TDD_Confi:(4)、最终获取字段“subframeAssignment”的值等步骤。虽然上述的解码方法中实现了正确的解码,但是在频繁解码,且对实时性要求高的场合,其性能是不高的。并且随着字段取值信息的增删、更新,皆需要更新源代码,每一个字段值的获取会迁涉到同数量级代码的变迁,如此:代码行会庞大、杂乱,难以维护,并且不利于新手快速加入到项目中来。
发明内容
要解决的技术问题是如何提高原始码流解码的性能。
针对现有技术中的缺陷,本发明提供一种原始码流解码方法和系统,可以有效提高原始码流解码的性能。
第一方面,本法发明提供一种原始码流解码方法,包括:
将当前所使用解码库的字段属性信息写入配置文件中;
读取配置文件,加载字段属性信息至内存;
接收用户端的原始码流;
按照字段属性信息依序遍历并解析原始码流字段;
根据用户需求格式化输出解析结果。
可选地,所述字段属性信息包括:
字段名、字段类型、类型个数、是否解析标识和共用体长度。
可选地,所述字段属性信息是字段属性为单位保存在解码配置文件中的;
可选地,所述字段属性信息是以链表形式加载至内存的。
可选地,所述按照字段属性信息依序遍历并解析原始码流字段包括:从原始码流首地址开始,根据偏移量大小对原始码流以字节为单为按顺序访问。
可选地,所述偏移量大小是根据字段属性信息中的共用体长度确定的。
可选地,所述偏移量大小是根据字段属性信息中的字段类型与类型个数的乘积确定的。
可选地,所述按照字段属性信息依序遍历并解析原始码流字段还包括:
比较预先设置的需要解析的字段个数和当前已经完成解析的字段个数,确定是否结束当前遍历的原始码流。
可选地,所述按照字段属性信息依序遍历并解析原始码流字段包括:
从字段属性中读取当前字段的字段属性的数据结构的项,判断该数据结构项是否是解析标志;
如果不是则后移原始码流偏移量;如果是则将已解析字段数加1,解析当前字段值,并格式化,后移原始码流偏移量;
进一步判断当前字段是否是共用体字段,如果不是则后移原始码流偏移量;
如果是则记录当前共用体长度,进一步判断当前共用体字段是否是最后一个字段,如果是则校正原始码流偏移量后,并后移原始码流偏移量;如果否则后移原始码流偏移量。
可选地,所述解析当前字段值,并格式化包括:
获取字段类型,按字段类型格式化解析相应的字段值,后移缓存输出字段信息空间的偏移量,结束当前字段的解析。
可选地,所述按照字段属性信息依序遍历并解析原始码流字段还包括:
比较预先设置的需要解析的字段个数和当前已经完成解析的字段个数,确定是否结束当前遍历的原始码流。
第二方面,本发明提供一种原始码流解码系统,包括:
配置文件生成单元,用于将当前所使用解码库的字段属性信息写入配置文件中;
配置信息获取单元,用于读取配置文件,加载字段属性信息至内存;
原始码流获取单元,用于接收用户端的原始码流;
原始码流解码单元,用于按照字段属性信息依序遍历并解析原始码流字段;
解码结果输出单元,用于根据用户需求格式化输出解析结果。
可选地,所述原始码流解码单元包括:
解码顺序控制单元,用于用指针指向于加载原始码流首地址,控制解码从原始码流首地址遍历,根据偏移量大小对原始码流按顺序遍历访问。
可选地,所述原始码流解码单元还包括:
字段解析单元,所述字段解析单元用于从字段属性中读取当前字段的字段属性的数据结构的项,判断当该数据结构项是否是解析标志;
如果不是则后移原始码流偏移量;如果是则将已解析字段数加1,解析当前字段值,并格式化,后移原始码流偏移量;
所述字段解析单元还用于进一步判断当前字段是否是共用体字段,如果不是则后移原始码流偏移量;
如果是则记录当前共用体长度,进一步判断当前共用体字段是否是最后一个字段,如果是则校正原始码流偏移量后,并后移原始码流偏移量;如果否则后移原始码流偏移量。
可选地,
所述字段解析单元包括字段格式化单元,用于获取字段类型,按字段类型格式化解析相应的字段值,后移缓存输出字段信息空间的偏移量。
可选地,
所述偏移量大小是根据字段属性信息中的共用体长度和字段类型与类型个数的乘积确定的。
由上述技术方案可知,本发明提供的原始码流解码方法和系统,将码流数据结构信息,与程序完全解藕,若要获取字段值,只要配置文件进行简单的修改即可,有利于新手快速参与到项目中来,同时代码行将不随字段多少,而线性增加。而且不要需要强制转换数据结构,只需要按字节、偏移量依次访问原始码流,在频繁解码过程中,可以有效提高解码速率,代码行比较稳定,不会随需求变更,产生大的变迁。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一个实施例中原始码流解码方法框架流程示意图;
图2为本发明一个实施例中字段属性链表结构示意图;
图3为本发明一个实施例中遍历访问原始码流偏移地址示意图;
图4为本发明一个实施例中原始码流解码方法流程示意图;
图5为本发明一个实施例中按字段属性内容解析码流示意图;
图6为本发明一个实施例中解析字段格式化流程结构示意图
图7为本发明一个实施例中原始码流解码系统结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明提供一种原始码流解码方法,包括:将当前所使用解码库的字段属性信息写入配置文件中;读取配置文件,加载字段属性信息至内存;接收用户端的原始码流;按照字段属性信息依序遍历并解析原始码流字段;根据用户需求格式化输出解析结果。下面对本发明提供的原始码流解码方法展开详细的说明。
首先,介绍将当前所使用解码库的字段属性信息写入配置文件中。
在解析原始码流之前,需要根据实际解码需求,将解码库的每个字段的字段属性信息作相应的配置并保存在相应的解码配置文件中,以备后续解码时使用。将字段的字段属性信息保存在配置文件中的步骤优选是以手工录入的方式实现的。具体地将原始码流的每一个字段,以穷举法形式将所有字段属信息整理出来,按一定的语法规录入配置文件。例如,字段属性信息包括:字段名、字段类型、类型个数、是否解析标识和共用体长度。
例如,如添加字段:char message,相关解码属性信息如下:
<name>message</name>字段名称为message
<type>CHAR_TYPE</type>字段类型为CHAR_TYPE
<NO>1</NO>类型个数为1,当前元素个数为1
<flag>false</flag>是否解析表示,当前字段不需要解析
<unionLen>0</unionLen>此字段不是共用体,所以设为0;若是共用体,直接写入共用体长度,若是结构本,则写入-1,两种情况,偏移量皆为0(字段类型个数为0)。
其次,读取配置文件,加载字段属性信息至内存。
在程序启动后,将配置文件中的字段属性作为数据结构的项以链表形式加载至内存,在程序启动之初会需要少许的时间,但在解码时直接使用,不会影响解码效率。如图2所示,在内存的链表中,每个字段整理出[字段名,字段类型,类型个数,是否解析,共用体长度]等字段属性信息等数据信息,作为数据结构的项。在内存中,这些数据结构以链表形式保存在内存里。图2为“字段属性”的相关链表结构简图,链表第一个项即为所需解析字段个数,每当遇到“共用体”字段时需要使用多层跳跃链表(LTE码流数据结构会在结构体中包含“共用体”,而共用体的大小为所有字段中最长字段的大小,故需要指明“共用体长度”,用于校正偏移量。)
再次,介绍接收用户端的原始码流。
用户端原始码流,是不停的发来,所以解析工作,是不停的进行。本发明中的到原始码流,是指解密后的、而且假定所有的码流是完整的、合法的一串二进制流。每条原始码流解码完毕,继续解码另一条原始码流。
第四,按照字段属性信息依序遍历并解析原始码流字段。
对原始码流解码时,使用内存中已经加载的字段属性信息,以字段属性为单位依序遍历原始码流。具体包括:用指针指向于加载原始码流首地址,控制解码从原始码流首地址开始遍历,根据偏移量大小对原始码流按顺序遍历访问。如果原始码流首地址遍历访问完毕一个字段,则按照相应的偏移量移到下一个字段的首地址。如此进行直至达到停止条件(完成解析字段个数,或完成所有字段)。
一般偏移量是根据字段属性信息中的字段类型与类型个数的乘积确定的。如果遍历到当前字段中共用体长度为0,即当前字段类型是普通字段,则访问字段偏移字段类型×类型个数,访问下一个字段。
如果遍历到当前字段中共用体长度为正数,则记录共用体长度(即共用体的实际长度),此时偏移量为0(与共用体中第一个字段是同一地址);若为-1,则为结构体变量,偏移量也记为0(第一个字段为结构体中第一个字段是同一地址),访问下一个字段首地址。也就是说,偏移量大小是根据字段属性信息中的共用体长度确定。由于共用体长度,由最大字段决定。而当前解析的字段,不一定是长度最大的字段,共用体的偏移量就不对了,因此需要调整。如图3所示,当遇到下一个字段为“共用体”时,先记录共用体的长度,等遍历完当前字段后,调整原始码流偏移量(即需要回退,并重新调整原始码流偏移量)。
为了避免多余的操作,在遍历原始码流的字段时,需要进一步判断当前的字段遍历结束后是否已经达到预先设置的需要解析的字段个数,根据预先设置的需要解析的字段个数确定结束当前遍历的原始码流。例如当前只需解析10个字段,那么只解析10个字段(10个字是分散在源始流不同部位),后面的字段就不需要解析了,跳出当前码流解析过程。当达到当前所需解析字段个数时,终止解析当前码流,避免多余的操作。
最后,介绍根据用户需求格式化输出解析结果。
在遍历原始码流时,根据字段属性信息中的解析标识确定相应的输出结果。例如,当前字段的解析标识为解析,则保存并格式化当前值,且偏移量后移,如果当前字段的解析标识为不解析,则直接后移源码当前指针。假设与用约定输出格式为如下:其中“;”即为格式化分隔符(也可以定为其它),结果类似于:“name1:具体值”;“name2:具体值”;“name3:具体值”;“name4:具体值”。
如图4所示,下面以具体的解码方法结合解码流程图为对本发明提供的原始码流解码过程做详细的说明。
解码开始后,获取原始码流的首地址,用指针指向于加载原始码流首地址,控制解码从原始码流首地址开始遍历指针,获取预先设置的需要解析的字段个数。遍历链表中的下一个字段属性的数据结构的项。判断当前的数据结构项是否是链表最后一个元素,如果是则输出缓冲区的数据内容;如果不是,则进一步判断当前的数据结构项是否以达到预先设置的需要解析的字段个数,如果是则输出缓冲区的数据内容;如果不是,则按字段属性内容解析码流,格式化存入缓存,返回继续遍历链表中下一个元素。输出缓冲区的数据内容后继续按上述方法解码其它原始码流,直至所有的原始码流解码完毕。
如图5所示,下面结合流程图为对上述按字段属性内容解析码流,格式化存入缓存过程做详细的说明。
解码遍历到当前字段时,从字段属性中读取当前字段的字段属性的数据结构的项,判断当该数据结构项是否是解析标志,如果不是则后移原始码流偏移量;如果是则将已解析字段数加1,解析当前字段值,并格式化,后移原始码流偏移量。进一步判断当前字段是否是共用体字段,如果不是则后移原始码流偏移量;如果是则记录当前共用体长度,进一步判断当前共用体字段是否是最后一个字段,如果是则校正原始码流偏移量后后移原始码流偏移量;如果否则校正原始码流偏移量。
如图6所示,下面结合流程图为对上述解析当前字段值,并格式化过程做详细的说明。
如果当前字段的数据结构项是解析标志,则进一步获取字段类型,按字段类型格式化解析相应的字段值,后移缓存输出字段信息空间的偏移量,结束当前字段的解析。字段类型包括整型字段、布尔型字段、单精度字段和双精度字段。
为进一步体现本发明提供的原始码流解码方法的优越性,本发明还提供一种应用上述方法的原始码流解码系统,如图7所示,该系统包括:配置文件生成单元,用于将当前所使用解码库的字段属性信息写入配置文件中;配置信息获取单元,用于读取配置文件,加载字段属性信息至内存;原始码流获取单元,用于接收用户端的原始码流;原始码流解码单元,用于按照字段属性信息依序遍历并解析原始码流字段;解码结果输出单元,用于根据用户需求格式化输出解析结果。在本发明中,所述原始码流解码单元包括:解码顺序控制单元,用于用指针指向于加载原始码流首地址,控制解码从原始码流首地址遍历,根据偏移量大小对原始码流按顺序遍历访问。所述原始码流解码单元还包括:字段解析单元,所述字段解析单元用于从字段属性中读取当前字段的字段属性的数据结构的项,判断当该数据结构项是否是解析标志;如果不是则后移原始码流偏移量;如果是则将已解析字段数加1,解析当前字段值,并格式化;所述字段解析单元还用于进一步判断当前字段是否是共用体字段,如果不是则后移原始码流偏移量;如果是则记录当前共用体长度(即共用体的实际长度),进一步判断当前共用体字段是否是最后一个字段,如果是则校正原始码流偏移量后(“偏移量“减去“累加的字段长度”加上“用公体实际长度”),并后移原始码流偏移量;如果否则后移原始码流偏移量。其中,所述字段解析单元包括字段格式化单元,用于获取字段类型,按字段类型格式化解析相应的字段值,后移缓存输出字段信息空间的偏移量(当前格式化后字符串大小)。其中所述偏移量大小是根据字段属性信息中的共用体长度和字段类型与类型个数的乘积确定的。在此需要说明的是本发明提供的原始码流解码系统的工作过程与上述的原始码流解码方法大致相同,具体过程可以参考上述原始码流解码方法,再次不再一一赘述。
综上所述,本发明提供的原始码流解码方法和系统,将码流数据结构信息,与程序完全解藕,若要获取字段值,只要配置文件进行简单的修改即可,有利于新手快速参与到项目中来,同时代码行将不随字段多少,而线性增加。而且不要需要强制转换数据结构,只需要按字节、偏移量依次访问原始码流,在频繁解码过程中,可以有效提高解码速率,代码行比较稳定,不会随需求变更,产生大的变迁。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后,需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
Claims (13)
1.一种原始码流解码方法,其特征在于,包括:
将当前所使用解码库的字段属性信息写入配置文件中;
读取配置文件,加载字段属性信息至内存;
接收用户端的原始码流;
按照字段属性信息依序遍历并解析原始码流字段;
根据用户需求格式化输出解析结果;其中,
所述按照字段属性信息依序遍历并解析原始码流字段包括:
从字段属性中读取当前字段的字段属性的数据结构的项,判断该数据结构项是否是解析标志;
如果不是则后移原始码流偏移量;如果是则将已解析字段数加1,解析当前字段值,并格式化;
进一步判断当前字段是否是共用体字段,如果不是则后移原始码流偏移量;
如果是则记录当前字段的共用体长度,进一步判断当前共用体字段是否是最后一个字段,如果是则校正原始码流偏移量,并后移原始码流偏移量;如果否则后移原始码流偏移量。
2.根据权利要求1所述的方法,其特征在于,所述字段属性信息包括:
字段名、字段类型、类型个数、是否解析标识和共用体长度。
3.根据权利要求1所述的方法,其特征在于,所述字段属性信息是字段属性为单位保存在解码配置文件中的。
4.根据权利要求1所述的方法,其特征在于,所述字段属性信息是以链表形式加载至内存的。
5.根据权利要求1所述的方法,其特征在于,所述按照字段属性信息依序遍历并解析原始码流字段包括:从原始码流首地址开始,根据偏移量大小对原始码流以字节为单为按顺序访问。
6.根据权利要求5所述的方法,其特征在于,所述偏移量大小是根据字段属性信息中的共用体长度确定的。
7.根据权利要求5所述的方法,其特征在于,所述偏移量大小是根据字段属性信息中的字段类型与类型个数的乘积确定的。
8.根据权利要求1所述的方法,其特征在于,所述按照字段属性信息依序遍历并解析原始码流字段还包括:
比较预先设置的需要解析的字段个数和当前已经完成解析的字段个数,确定是否结束当前遍历的原始码流。
9.根据权利要求1所述的方法,其特征在于,所述解析当前字段值,并格式化包括:
获取字段类型,按字段类型格式化解析相应的字段值,后移缓存输出字段信息空间的偏移量,结束当前字段的解析。
10.一种原始码流解码系统,其特征在于,包括:
配置文件生成单元,用于将当前所使用解码库的字段属性信息写入配置文件中;
配置信息获取单元,用于读取配置文件,加载字段属性信息至内存;
原始码流获取单元,用于接收用户端的原始码流;
原始码流解码单元,用于按照字段属性信息依序遍历并解析原始码流字段;
解码结果输出单元,用于根据用户需求格式化输出解析结果;其中,
所述原始码流解码单元包括:
字段解析单元,所述字段解析单元用于从字段属性中读取当前字段的字段属性的数据结构的项,判断该数据结构项是否是解析标志;
如果不是则后移原始码流偏移量;如果是则将已解析字段数加1,解析当前字段值,并格式化,后移原始码流偏移量;
所述字段解析单元还用于进一步判断当前字段是否是共用体字段,如果不是则后移原始码流偏移量;
如果是则记录当前共用体长度,进一步判断当前共用体字段是否是最后一个字段,如果是则校正原始码流偏移量后,并后移原始码流偏移量;如果否,直接后移原始码流偏移量。
11.根据权利要求10所述的原始码流解码系统,其特征在于,所述原始码流解码单元包括:
解码顺序控制单元,用于用指针指向于加载原始码流首地址,控制解码从原始码流首地址遍历,根据偏移量大小对原始码流按顺序遍历访问。
12.根据权利要求10所述的原始码流解码系统,其特征在于,所述字段解析单元包括字段格式化单元,用于获取字段类型,按字段类型格式化解析相应的字段值,后移缓存输出字段信息空间的偏移量。
13.根据权利要求10所述的原始码流解码系统,其特征在于,
偏移量大小是根据字段属性信息中的共用体长度,字段类型与类型个数的乘积确定的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610067318.0A CN107025125B (zh) | 2016-01-29 | 2016-01-29 | 一种原始码流解码方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610067318.0A CN107025125B (zh) | 2016-01-29 | 2016-01-29 | 一种原始码流解码方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107025125A CN107025125A (zh) | 2017-08-08 |
CN107025125B true CN107025125B (zh) | 2019-10-22 |
Family
ID=59523984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610067318.0A Active CN107025125B (zh) | 2016-01-29 | 2016-01-29 | 一种原始码流解码方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107025125B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727417B (zh) * | 2018-06-28 | 2024-03-15 | 腾讯科技(北京)有限公司 | 一种数据处理方法和装置 |
CN109814870A (zh) * | 2018-12-26 | 2019-05-28 | 东软集团股份有限公司 | 数据解析方法、装置、存储介质及电子设备 |
CN111967225B (zh) * | 2020-08-20 | 2023-10-27 | 深圳数智慧科技有限公司 | 指标编码方法、装置及可读存储介质 |
CN113835750B (zh) * | 2021-09-23 | 2022-10-14 | 中国人民解放军63620部队 | 一种基于自定义规则的通用数据帧快速解码方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101001159A (zh) * | 2006-12-30 | 2007-07-18 | 华为技术有限公司 | 一种解码方法和解码器 |
CN101232409A (zh) * | 2008-02-20 | 2008-07-30 | 中兴通讯股份有限公司 | 不对称数字用户线路终端设备的配置方法 |
CN104021147A (zh) * | 2014-05-16 | 2014-09-03 | 上海大唐移动通信设备有限公司 | 一种码流解析方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7177804B2 (en) * | 2005-05-31 | 2007-02-13 | Microsoft Corporation | Sub-band voice codec with multi-stage codebooks and redundant coding |
WO2011133644A2 (en) * | 2010-04-22 | 2011-10-27 | Bae Systems Information And Electronic Systems Integration Inc. | Distributing messages in multiple formats in tactical communications networks |
-
2016
- 2016-01-29 CN CN201610067318.0A patent/CN107025125B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101001159A (zh) * | 2006-12-30 | 2007-07-18 | 华为技术有限公司 | 一种解码方法和解码器 |
CN101232409A (zh) * | 2008-02-20 | 2008-07-30 | 中兴通讯股份有限公司 | 不对称数字用户线路终端设备的配置方法 |
CN104021147A (zh) * | 2014-05-16 | 2014-09-03 | 上海大唐移动通信设备有限公司 | 一种码流解析方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107025125A (zh) | 2017-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107025125B (zh) | 一种原始码流解码方法和系统 | |
CN105447099B (zh) | 日志结构化信息提取方法及装置 | |
KR101011663B1 (ko) | Xml 문서의 구조적 스트리밍을 위한 방법 및 장치 | |
US7772998B2 (en) | Method and apparatus for encoding/decoding metadata | |
US9131000B2 (en) | Methods, systems, and computer readable media for heuristics-based adaptive protocol parsing | |
CN107015948B (zh) | 一种日志信息格式化方法及系统 | |
US20030110177A1 (en) | Declarative specification and engine for non-isomorphic data mapping | |
CN109104405B (zh) | 二进制协议编码、解码方法和装置 | |
US8683320B2 (en) | Processing module, a device, and a method for processing of XML data | |
US20100287460A1 (en) | Method and device for coding a structured document | |
CN107566090B (zh) | 一种定长/变长的文本报文处理方法及装置 | |
CN103853650A (zh) | 一种模糊测试的测试用例生成方法及装置 | |
US7747942B2 (en) | System and method for obtaining a markup language template through reversing engineering | |
CN108762743A (zh) | 一种数据表操作代码生成方法及装置 | |
CN110457526A (zh) | 基于xml文件的通用化数据解析方法 | |
US8947272B2 (en) | Decoding encoded data | |
JP2011146036A (ja) | 情報処理装置及びその制御方法並びにプログラム | |
CN104978325B (zh) | 一种网页处理方法、装置及用户终端 | |
US20080313291A1 (en) | Method and apparatus for encoding data | |
CN102270223B (zh) | 消息解码库的生成方法、装置及消息解码方法、装置 | |
CN108664546A (zh) | Xml数据结构转换方法和装置 | |
CN108429764A (zh) | 一种基于私有协议的数据传输和解析的方法 | |
CN110347567B (zh) | 一种基于协议匹配的二进制数据日志分析方法和系统 | |
CN112822265A (zh) | 数据编码方法、装置、设备端及存储介质 | |
CN117041652A (zh) | 基于浏览器的视频录制方法及装置、电子设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |