是否有一致的方法将 c 结构体从文件读回 Python 数据类?
例如
我有这个c结构
struct boh {
uint32_t a;
int8_t b;
boolean c;
};
我想将它的数据读入它自己的Python数据类
@dataclass
class Boh:
a: int
b: int
c: bool
有没有办法装饰这个类,使其以某种方式成为可能?
注意:因为我在创建类时一直在读取字节并将它们手动偏移到类中,所以我想知道是否有更好的选择。
struct.unpack
将字节解包到元组中,然后可以将其解包为数据类构造函数的参数。 struct.unpack
的格式化字符可以在 here 找到,其中 L
表示无符号长整型,b
表示带符号字符,?
表示布尔值:
import struct
from dataclasses import dataclass
@dataclass
class Boh:
a: int
b: int
c: bool
data = bytes((0xff, 0xff, 0xff, 0xff, 0x7f, 1))
print(Boh(*struct.unpack('Lb?', data)))
输出:
Boh(a=4294967295, b=127, c=True)