前言:关于使用C语言中会遇到数据需要转换或者提取的情况。如果字节数目相同和规则符合自己的预设值,那还好。若是不符合需要自己自行去对照。主要针对于字符串数据的提取和4字节(8字节)也是类似来实现短数据的提取。
关键词:数据提前、规则。
一、短数据的提取
短数据提取的时候一般指在一个短4字节为例。
typedef union
{
struct
{
uint8_t u8BL1;
uint8_t u8BL2;
uint8_t u8BL3;
uint8_t u8BL4;
} inbytes;
struct
{
uint16_t u16L1;
uint16_t u16L2;
} inU16;
int32_t s32v;
uint32_t u32v;
} Format32bits_st;
可以通过定义Format32bits_st的结构,任意去得到bit0和bit1,bit2,bit3各个位置的数值。同样也可以方位2字节的高位和低位组合,分别实现正向转换和逆向转换。
二、长数据的提取
长数据的提取需要自行定义规范来实现数据的传输和解析。行业上称为数据帧,对数据帧进行调试称为帧解析。
处理大量的数据,需要进行封包和解包的处理,以及包校验。
通常用于通信数据帧解析上:
typedef struct
{
uint32_t FrameInfo; //传输数据的信息
uint32_t FrameOfs; //传输数据的偏移量
uint32_t FrameLen; //传输的数据帧长度
uint16_t crc; //crc校验
}FramePack_t;
传输后面通过解析和各种存储方式来进行