如何将Perl的pack 'Nc*'格式转换为Python的struct.pack?
我正在把一个Perl脚本转换成Python,这个脚本用到了很多不同的包。我已经弄明白了每个包在“模板”中的字母差异,但我对Perl没有长度声明这一点有点困惑。
举个例子:
pack('Nc*',$some_integer,$long_array_of_integers);
我在Python的struct.pack中没有找到和这个“*”功能相对应的东西。有没有什么想法可以把它转换成Python呢?
2 个回答
1
Perl中的pack函数使用了'*'这个字符,和正则表达式里的用法类似——它表示可以匹配多个相同的东西。在这里,它的意思是可以处理多个带符号的整数。
在Python中,你只需要遍历字符串,然后把各个部分连接起来就可以了:
result = struct.pack('>L', some_integer)
for c in long_array_of_integers:
result += struct.pack('b',c)
7
这样怎么样?
struct.pack('>I', some_integer) + struct.pack('b'*len(long_array), *long_array)