在包装结构物时,我通常这样做
假设我有这样一个结构:
struct test {
unsigned int Id;
unsigned int Member1;
unsigned int Member2[2];
unsigned int Member3[3];
};
test_values = (1,20,1,2,3,4,5)
vaultmap = struct.pack('IIIIIII',*test_values)
如果数组的大小很小,这种方法是可以的,但是如果它是一个更大的数字,比如512,我发现这种方法是有限制的,因为我必须说我512次,并相应地初始化这些值。有没有什么方法可以像我们对查尔那样避免这种情况。
如果我有char sam[512],我们可以使用512s,一些类似的东西,我正在寻找。我正在使用Python2.4
512I建议有效,但我应该如何初始化数组。我想我不需要输入512个整数,比如array_values=(1,1,1,1。。。。。。高达512)肯定有办法做到这一点。如果我使用一个数组,我会得到一个错误,说需要整数。
最佳答案
在struct
documentation中有一种方法。
格式字符前面可以有整数重复计数。例如,格式字符串“4h”的含义与“hhh”完全相同。
所以在代码中-它看起来像:
# test_values is a list of 512 integers
vaultmap = struct.pack('512I',*test_values)
但是,请注意,与字符串不同,所有512都是独立的数字(不是单个数组的一部分)。稍后可以使用python操作将它们视为数组。
对于“s”格式字符,计数被解释为字符串的大小,而不是像其他格式字符那样的重复计数;
关于python - Python:结构模块包装整数数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23035752/