CN116301907A - 解析结构体二进制数据的方法、设备、介质及*** - Google Patents
解析结构体二进制数据的方法、设备、介质及*** Download PDFInfo
- Publication number
- CN116301907A CN116301907A CN202310587225.0A CN202310587225A CN116301907A CN 116301907 A CN116301907 A CN 116301907A CN 202310587225 A CN202310587225 A CN 202310587225A CN 116301907 A CN116301907 A CN 116301907A
- Authority
- CN
- China
- Prior art keywords
- decoding
- binary data
- data
- parameters
- decoding parameters
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000013507 mapping Methods 0.000 claims abstract description 19
- 238000006243 chemical reaction Methods 0.000 claims abstract description 10
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012423 maintenance Methods 0.000 abstract description 5
- 238000011161 development Methods 0.000 abstract description 3
- 238000007726 management method Methods 0.000 abstract description 3
- 238000011160 research Methods 0.000 abstract description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
Abstract
本发明公开了一种解析结构体二进制数据的方法、设备、介质及***,属于数据转换领域,包括以下步骤:S1,读取配置文件,根据配置文件中对多个结构体中元素取值的描述,生成解码参数;S2,构造解码参数管理器,将生成的解码参数的地址与每个二进制数据块的结构体标识建立映射关系;S3,Buffer数据输入,解码参数管理器根据结构体标识和映射关系定位解码参数;S4,根据解码参数解码,解析为数组;数组形成后进行格式转换。本发明无需构建和维护大量相似代码,大量节约了研发与维护管理成本。
Description
技术领域
本发明涉及数据转换领域,更为具体的,涉及一种解析结构体二进制数据的方法、设备、介质及***。
背景技术
目前在数据转换领域,对于结构体已存在的解析方案,是针对不同的结构体,单独配置不同的解析函数进行解析,如有一万个结构体需要转换为JOSN或者写入数据库,则需写一万个解析函数与之对应,这样的技术方案就导致代码繁琐,并且在解析过程中,也需要维护管理大量的解析函数。现有解析方案存在造成各类资源的浪费,增加维护难度的问题。
发明内容
本发明的目的在于克服现有技术的不足,提供一种解析结构体二进制数据的方法、设备、介质及***,无需构建和维护大量相似代码,大量节约了研发与维护管理成本。
本发明的目的是通过以下方案实现的:
一种解析结构体二进制数据的方法,包括以下步骤:
S1,读取配置文件,根据配置文件中对多个结构体中元素取值的描述,生成解码参数;
S2,构造解码参数管理器,将生成的解码参数的地址与每个二进制数据块的结构体标识建立映射关系;
S3,Buffer数据输入,解码参数管理器根据结构体标识和映射关系定位解码参数;
S4,根据解码参数解码,解析为数组;数组形成后进行格式转换。
进一步地,在步骤S1中,一个结构体对应多个解码参数,每个解码参数有多个数据成员。
进一步地,在步骤S2中,每一个需要解算的二进制数据块,都有一个结构体标识,用于定位解码参数。
进一步地,在步骤S2中,在所述解码参数管理器中存储着不同消息数据的解码参数与消息数据中的ID映射表,每次消息数据进来后,根据两者的ID进行寻找匹配,找到对应的解码参数。
进一步地,在步骤S2中,在生成解码参数后,包括子步骤:将解码参数存储至构建的解码参数管理器中。
进一步地,在步骤S4中,所述格式包括XML格式、JSON格式。
进一步地,每一个数据成员均包含:数据类型、地址偏移和数据长度。
一种解析结构体二进制数据的设备,包括:
初始化模块,用于执行初始化流程:读取配置文件,根据配置文件中对多个结构体中元素取值的描述,生成解码参数;再构造解码参数管理器,将生成的解码参数的首地址与每个二进制数据块的结构体标识建立映射关系;
解码模块,用于执行解码流程:Buffer数据输入,解码参数管理器根据结构体标识和映射关系定位解码参数;再根据解码参数解码,解析为数组;数组形成后进行格式转换。
一种计算机可读存储介质,在可读存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行如上任一项所述的解析结构体二进制数据的方法。
一种解析结构体二进制数据的***,包括如上所述的解析结构体二进制数据的设备。
本发明的有益效果包括:
本发明通过解码参数管理器,管理维护结构体解码参数,在Buffer数据进行解析时,无需构建和维护大量相似代码,大量节约了研发与维护管理成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例方法的初始化流程图;
图2为本发明实施例方法的解码流程图。
具体实施方式
本说明书中所有实施例公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合和/或扩展、替换。
针对背景中的问题,本发明的发明人进一步进行创造性的思考后认为,现有解析方案中主要存在问题在于代码量大,每一种结构体都需要构建一个解析函数;现有解析方案维护困难,结构体修改时需要同步维护解析函数。因此,为了解决上述技术问题,本发明技术方案构思如下:提前根据配置文件中对多个结构体中元素取值的描述,生成解码参数,并构建一种解码参数管理器,将结构体与解码参数进行管理,Buffer数据输入时,利用解码参数管理器对其进行快速判断定位需要的解码参数,再根据解码参数进行解码,解析为数组,实现解析。其中,关于解码参数:消息数据是一串人类不可读的二进制数据,需要解算,解码参数则是解码的规则,解码参数规定了从开始到第几位是什么类型,按照这个类型对对应位数的二进制进行转换,得到数值,完成解算。其中,本发明构建了一种解码参数管理器,在解码参数管理器中存储着不同消息数据的解码参数与消息数据中的ID映射表,每次消息数据进来后,根据两者的ID进行寻找匹配,找到对应的解码参数。在生成解码参数后,会将解码参数存储至构建的解码参数管理器中。
本发明的方法包括初始化流程和解码流程。如图1所示,在初始化流程中,包括如下子流程:步骤1、读取配置文件,根据配置文件中对多个结构体中元素取值的描述(从符合要求的结构体中取一个或多个元素),生成解码参数。其中一个结构体对应多个解码参数,每个解码参数有多个数据成员,每一个数据成员包含:数据类型、地址偏移、数据长度。例如,根据某一规则,解析为如下形式解码参数:A.c;B.e;C.z。步骤2、构造一个解码参数管理器,该解码参数管理器用于维护结构体与解码参数的映射关系。
如图2所示,在解码流程中,包括如下子流程:步骤1、当Buffer数据输入,解码参数管理器根据Buffer数据自动匹配对应解析参数,如有一个Buffer数据刚好符合上述举例所示,则根据上述解码参数,把二进制数据的第1个字节转换为char类型数据,2-3个字节转换为short类型数据,第4个字节转换为char类型数据,以此内推,形成数组。步骤2、数组形成后,用户根据自己需求,转换为其他格式,如XML、JSON、时序数据或其他数据格式。
需要说明的是,在本发明权利要求书中所限定的保护范围内,以下实施例均可以从上述具体实施方式中,例如公开的技术原理,公开的技术特征或隐含公开的技术特征等,以合乎逻辑的任何方式进行组合和/或扩展、替换。
实施例1
一种解析结构体二进制数据的方法,包括以下步骤:
S1,读取配置文件,根据配置文件中对多个结构体中元素取值的描述,生成解码参数;
S2,构造解码参数管理器,将生成的解码参数的地址与每个二进制数据块的结构体标识建立映射关系;
S3,Buffer数据输入,解码参数管理器根据结构体标识和映射关系定位解码参数;
S4,根据解码参数解码,解析为数组;数组形成后进行格式转换。
实施例2
在实施例1的基础上,在步骤S1中,一个结构体对应多个解码参数,每个解码参数有多个数据成员。
实施例3
在实施例1的基础上,在步骤S2中,每一个需要解算的二进制数据块,都有一个结构体标识,用于定位解码参数。
实施例4
在实施例1的基础上,在步骤S2中,在所述解码参数管理器中存储着不同消息数据的解码参数与消息数据中的ID映射表,每次消息数据进来后,根据两者的ID进行寻找匹配,找到对应的解码参数。
实施例5
在实施例3的基础上,在步骤S2中,在生成解码参数后,包括子步骤:将解码参数存储至构建的解码参数管理器中。
实施例6
在实施例1的基础上,在步骤S4中,所述格式包括XML格式、JSON格式。
实施例7
在实施例2的基础上,每一个数据成员均包含:数据类型、地址偏移和数据长度。
实施例8
一种解析结构体二进制数据的设备,包括:
初始化模块,用于执行初始化流程:读取配置文件,根据配置文件中对多个结构体中元素取值的描述,生成解码参数;再构造解码参数管理器,将生成的解码参数的首地址与每个二进制数据块的结构体标识建立映射关系;
解码模块,用于执行解码流程:Buffer数据输入,解码参数管理器根据结构体标识和映射关系定位解码参数;再根据解码参数解码,解析为数组;数组形成后进行格式转换。
实施例9
一种计算机可读存储介质,在可读存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行如实施例1~实施例7任一项所述的解析结构体二进制数据的方法。
实施例10
一种解析结构体二进制数据的***,包括如实施例8所述的解析结构体二进制数据的设备。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
根据本发明实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
作为另一方面,本发明实施例还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。
上述技术方案只是本发明的一种实施方式,对于本领域内的技术人员而言,在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形,而不仅限于本发明上述具体实施方式所描述的方法,因此前面描述的方式只是优选的,而并不具有限制性的意义。
除以上实例以外,本领域技术人员根据上述公开内容获得启示或利用相关领域的知识或技术进行改动获得其他实施例,各个实施例的特征可以互换或替换,本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (10)
1.一种解析结构体二进制数据的方法,其特征在于,包括以下步骤:
S1,读取配置文件,根据配置文件中对多个结构体中元素取值的描述,生成解码参数;
S2,构造解码参数管理器,将生成的解码参数的地址与每个二进制数据块的结构体标识建立映射关系;
S3,Buffer数据输入,解码参数管理器根据结构体标识和映射关系定位解码参数;
S4,根据解码参数解码,解析为数组;数组形成后进行格式转换。
2.根据权利要求1所述的解析结构体二进制数据的方法,其特征在于,在步骤S1中,一个结构体对应多个解码参数,每个解码参数有多个数据成员。
3.根据权利要求1所述的解析结构体二进制数据的方法,其特征在于,在步骤S2中,每一个需要解算的二进制数据块,都有一个结构体标识,用于定位解码参数。
4.根据权利要求1所述的解析结构体二进制数据的方法,其特征在于,在步骤S2中,在所述解码参数管理器中存储着不同消息数据的解码参数与消息数据中的ID映射表,每次消息数据进来后,根据两者的ID进行寻找匹配,找到对应的解码参数。
5.根据权利要求3所述的解析结构体二进制数据的方法,其特征在于,在步骤S2中,在生成解码参数后,包括子步骤:将解码参数存储至构建的解码参数管理器中。
6.根据权利要求1所述的解析结构体二进制数据的方法,其特征在于,在步骤S4中,所述格式包括XML格式、JSON格式。
7.根据权利要求2所述的解析结构体二进制数据的方法,其特征在于,每一个数据成员均包含:数据类型、地址偏移和数据长度。
8.一种解析结构体二进制数据的设备,其特征在于,包括:
初始化模块,用于执行初始化流程:读取配置文件,根据配置文件中对多个结构体中元素取值的描述,生成解码参数;再构造解码参数管理器,将生成的解码参数的首地址与每个二进制数据块的结构体标识建立映射关系;
解码模块,用于执行解码流程:Buffer数据输入,解码参数管理器根据结构体标识和映射关系定位解码参数;再根据解码参数解码,解析为数组;数组形成后进行格式转换。
9.一种计算机可读存储介质,其特征在于,在可读存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行如权利要求1~7任一项所述的解析结构体二进制数据的方法。
10.一种解析结构体二进制数据的***,其特征在于,包括如权利要求8所述的解析结构体二进制数据的设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310587225.0A CN116301907A (zh) | 2023-05-24 | 2023-05-24 | 解析结构体二进制数据的方法、设备、介质及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310587225.0A CN116301907A (zh) | 2023-05-24 | 2023-05-24 | 解析结构体二进制数据的方法、设备、介质及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116301907A true CN116301907A (zh) | 2023-06-23 |
Family
ID=86836326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310587225.0A Pending CN116301907A (zh) | 2023-05-24 | 2023-05-24 | 解析结构体二进制数据的方法、设备、介质及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116301907A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1735209A (zh) * | 2004-08-02 | 2006-02-15 | 三星电子株式会社 | 使用流水线结构的二进制算术解码装置和方法 |
CN108052320A (zh) * | 2017-12-11 | 2018-05-18 | 上证所信息网络有限公司 | 一种将二进制结构体转换为json对象的方法 |
CN109814870A (zh) * | 2018-12-26 | 2019-05-28 | 东软集团股份有限公司 | 数据解析方法、装置、存储介质及电子设备 |
-
2023
- 2023-05-24 CN CN202310587225.0A patent/CN116301907A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1735209A (zh) * | 2004-08-02 | 2006-02-15 | 三星电子株式会社 | 使用流水线结构的二进制算术解码装置和方法 |
CN108052320A (zh) * | 2017-12-11 | 2018-05-18 | 上证所信息网络有限公司 | 一种将二进制结构体转换为json对象的方法 |
CN109814870A (zh) * | 2018-12-26 | 2019-05-28 | 东软集团股份有限公司 | 数据解析方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108399256B (zh) | 异构数据库内容同步方法、装置及中间件 | |
CN112104664B (zh) | 物联网数据的协议转换方法、装置及设备 | |
CN109104405B (zh) | 二进制协议编码、解码方法和装置 | |
CN111090417B (zh) | 二进制文件解析方法、装置、设备及介质 | |
CN112287009A (zh) | 接口调用和接口数据入库方法、装置、设备及存储介质 | |
CN111131403A (zh) | 一种物联网设备的消息编解码方法及装置 | |
CN110708307B (zh) | 转码器生成方法和装置、电子设备及存储介质 | |
CN108664546B (zh) | Xml数据结构转换方法和装置 | |
CN113076729A (zh) | 用于报表导入的方法及***、可读存储介质及电子设备 | |
CN114489594A (zh) | 一种命令解析器的构建方法、命令解析处理方法及装置 | |
CN111552839B (zh) | 一种基于xml模板的对象转换方法 | |
CN103051480B (zh) | 一种dn的存储方法及dn存储装置 | |
CN115329759B (zh) | 信息处理方法、装置、设备及存储介质 | |
CN116301907A (zh) | 解析结构体二进制数据的方法、设备、介质及*** | |
CN107038022B (zh) | 一种反序列化方法及装置 | |
CN116775599A (zh) | 数据迁移方法、装置、电子设备、存储介质 | |
CN110806973A (zh) | 一种接口报文的自动生成方法及装置 | |
CN115437906A (zh) | 测试方法和装置 | |
CN109992293B (zh) | Android***组件版本信息的组装方法及装置 | |
CN113378544A (zh) | 文本解析方法、文本数据获取方法、装置、介质及设备 | |
CN112835901A (zh) | 文件存储方法及装置、计算机设备、计算机可读存储介质 | |
CN112632167A (zh) | 一种结构化数据的数据转化方法、数据转化***及相关装置 | |
CN112230983B (zh) | 信息处理方法、电子设备和介质 | |
CN115001628B (zh) | 数据编码的方法及装置、数据解码的方法及装置和数据结构 | |
WO2023185377A1 (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20230623 |