如何将Perl的包'Nc *'格式转换为Python的struct.pack?

时间:2009-10-06 19:18:42

标签: python perl struct pack

我正在尝试将Perl脚本转换为python,它使用了很多不同的包。我已经能够找出每个“模板”中的字母差异,但我在理解如何处理Perl缺少长度声明时遇到了问题。

示例:

pack('Nc*',$some_integer,$long_array_of_integers);

在Python上,我没有在struct.pack中看到这个“*”特征的模拟。关于如何将其转换为Python的任何想法?

2 个答案:

答案 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)