python - 如何使用 python 结构将结构打包到结构中?

标签 python struct memory-alignment

如何在 struct python 中打包给定的 struct t1

我看到这里给出了很多例子https://docs.python.org/2/library/struct.html打包值,例如: 包('hhl', 1, 2, 3)

但是如何在 struct python 示例中打包 c 类型 struct t1

struct s {
    int16_t x;
    int8_t  y;
    uint8_t z;
};
struct t1 {
    int16_t  x;
    struct s y;
};

最佳答案

似乎没有将结构打包成结构的内置方法,但您可以手动完成。您将第一个结构打包成二进制数据,然后使用 s 格式字符将该二进制数据打包到第二个结构中:

s= struct.Struct('hbB')
t1= struct.Struct('h{}s'.format(s.size))

buffer= t1.pack(1, s.pack(2,3,4))

解压它:

loaded_t1= t1.unpack(buffer)
loaded_s= s.unpack(loaded_t1[1])

关于python - 如何使用 python 结构将结构打包到结构中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42556035/

相关文章:

python - Tensorflow GPU - 导入错误 : Could not find 'nvcuda.dll'

c - 尝试实现我自己的列表时出现内存错误

c - 交换链表中的节点

assembly - 将局部变量与 16 字节边界对齐 (x86 asm)

python - Pandas :枚举每组中的项目

python - 在 Django/Django Rest 中添加两因素身份验证

python - Json 字符串解析在从 MSDOS 运行时有效,但在 Windows 上的 Ubuntu 上的 Bash 中无效

c - 循环遍历 struct - C 中的属性

c - C 结构的数据对齐

c - 将未对齐的数据复制到新位置后未发生 Solaris 总线错误