c语言中 x3d 占用字节,将字节字符串解析为C结构

给定一个定义了很多结构的C头文件和一个原始的十六进制字符串,我想把这个字符串解析成相应的C结构。在

我已经调查过了解包结构()来实现这一点,但我无法想出一种自动派生格式字符串的方法(这是可取的,因为头文件经常更新)。在

正在寻找为生成格式字符串的方法解压()正确的方法?或者有没有更简单的方法把十六进制字符串解析成C结构?在import struct

'''

Example structure:

typedef struct {

struct {

uint8_t a_flag:1;

uint8_t b_flag:1;

uint8_t c_flag:1;

uint8_t d_flag:1;

uint8_t unused:3;

uint8_t e_flag:1;

} PACKED flag_byte_0;

struct {

uint8_t unused:6;

uint8_t f_flag:1;

uint8_t g_flag:1;

} PACKED flag_byte_1;

struct {

uint8_t unused:5;

uint8_t h_flag:1;

uint8_t i_flag:1;

uint8_t j_flag:1;

} PACKED flag_byte_2;

struct {

uint8_t unused:2;

uint8_t k_flag;

uint8_t l_flag:1;

uint8_t unused_2:4;

} PACKED flag_byte_3;

uint16_t field_a;

uint16_t field_b;

uint32_t field_c:24;

uint32_t field_d:8;

} PACKED struct_example;

'''

if __name__ == '__main__':

hex_string = '\x10\x08\x00\x00\x3d\x00\x08\xd7\x90\x00\x00\x0a'

format_string = 'BBBBHHI'

struct.unpack(format_string, hex_string)

# returns (16, 8, 0, 0, 61, 55048, 167772304)

# really want:

# a_flag:1

# g_flag:1

# ...

# field_a: 0x3d00

# etc...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值