Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python struct将结构打包到结构中?_Python_Struct_Memory Alignment - Fatal编程技术网

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

如何使用python struct将结构打包到结构中?,python,struct,memory-alignment,Python,Struct,Memory Alignment,如何在struct python中打包给定的struct t1 我看到这里给出了许多示例来包装值,如: pack('hhl',1,2,3) 但是如何在structpython示例中打包c类型structt1 struct s { int16_t x; int8_t y; uint8_t z; }; struct t1 { int16_t x; struct s y; }; 如果我正确理解你的问题,可能会被命名为“双倍”。 这里有一个例子 from c

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

我看到这里给出了许多示例来包装值,如:
pack('hhl',1,2,3)

但是如何在
structpython
示例中打包c类型
structt1

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

如果我正确理解你的问题,可能会被命名为“双倍”。 这里有一个例子

from collections import namedtuple
v1 = namedtuple("a1", "f1 f2");
var1 = v1(1, 2);
v2 = namedtuple("a2", "v1 f3");
var2 = (var1, 3);
以下是输出:

>>> print(var2)
(a1(f1=1, f2=2), 3)

似乎没有内置的方法将结构打包到结构中,但您可以手动完成。将第一个结构打包成二进制数据,然后使用
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])