Ami*_*rma 5 python struct memory-alignment
struct t1中给出了如何打包struct python。
我看到这里给出了许多示例https://docs.python.org/2/library/struct.html来打包如下值:
pack('hhl', 1, 2, 3)。
但是如何打包示例struct t1中的c类型struct python。
struct s {
int16_t x;
int8_t y;
uint8_t z;
};
struct t1 {
int16_t x;
struct s y;
};
Run Code Online (Sandbox Code Playgroud)
似乎没有内置方法可以将结构打包到结构中,但您可以手动完成。您将第一个结构打包到二进制数据中,然后使用s格式字符将该二进制数据打包到第二个结构中:
s= struct.Struct('hbB')
t1= struct.Struct('h{}s'.format(s.size))
buffer= t1.pack(1, s.pack(2,3,4))
Run Code Online (Sandbox Code Playgroud)
并解压它:
loaded_t1= t1.unpack(buffer)
loaded_s= s.unpack(loaded_t1[1])
Run Code Online (Sandbox Code Playgroud)
小智 0
如果我正确理解你的问题,可能可以使用命名元组。这是一个例子。
from collections import namedtuple
v1 = namedtuple("a1", "f1 f2");
var1 = v1(1, 2);
v2 = namedtuple("a2", "v1 f3");
var2 = (var1, 3);
Run Code Online (Sandbox Code Playgroud)
这是输出:
>>> print(var2)
(a1(f1=1, f2=2), 3)
Run Code Online (Sandbox Code Playgroud)