获取C语言数据提取

C语言共用体(C语言union用法)详解

前言:关于使用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;

传输后面通过解析和各种存储方式来进行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值