框架_C语言_数据包解析代码框架

数据解析

何时会用到数据解析:

     在数据传输中,我们经常会需要规定数据的一些格式,这就需要我们对数据进行组包、拆分操作,因此,只要有数据报文的传输,那么就一定有数据解析的存在。下面以一个具体的示例来详细的描述数据解析的过程以及代码框架。

逻辑上的拆包:

逻辑上的拆包主要是搞懂"帧头是什么"、"数据段传递了什么"、"校验位如何规定的"这三个问题。 

首先我们需要在相应的协议文档找到数据的格式是什么样子的,比如在下图,数据格式就是由帧起始位、帧长度域等组成的,这一部分往往是报文的控制内容。

接下来我们需要找到数据域是如何组成的,这代表这一个报文数据所要传递的信息,比如在下图,数据域就要传递采集时间、表底值等信息。

最后我们需要搞清楚校验位是怎么计算的,这关系着接收时如何去判断数据包的正确性。比如在当前举例的协议中,校验位是1位,它是校验和的计算模式,文档中的描述如下:

报文拆包示例:

下面举一个例子来应用上述的拆包流程。真实的0x31报文如下:

68002e03333832363030303100000000000000000001310dc6044c00000000000000000000000000000000000000000000ec

这是一段由十六进制展示的0x31报文,68代表0x68。帧结构如下:

根据这个结构,我们可以清晰的得知:

内容含义 内容数据
帧起始位 0x68
帧长度域 0x00 0x2e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值