我正在尝试将Perl脚本转换为python,它使用了很多不同的包。我已经能够找出每个“模板”中的字母差异,但我在理解如何处理Perl缺少长度声明时遇到了问题。
示例:
pack('Nc*',$some_integer,$long_array_of_integers);
在Python上,我没有在struct.pack中看到这个“*”特征的模拟。关于如何将其转换为Python的任何想法?
答案 0 :(得分:7)
这个怎么样?
struct.pack('>I', some_integer) + struct.pack('b'*len(long_array), *long_array)
答案 1 :(得分:1)
Perl的包正在使用类似于正则表达式的'*'字符 - 意味着更多相同的通配符。当然,这意味着更多签名的内容。
在Python中,你只需遍历字符串并连接各个部分:
result = struct.pack('>L', some_integer)
for c in long_array_of_integers:
result += struct.pack('b',c)