5

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

例子:

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

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

4

2 回答 2

7

这个怎么样?

struct.pack('>I', some_integer) + struct.pack('b'*len(long_array), *long_array)
于 2009-10-06T19:39:30.480 回答
1

Perl 的包使用类似于正则表达式中的“*”字符——意味着更多相同的通配符。当然,这里意味着更多的有符号整数。

在 Python 中,您只需遍历字符串并连接各个部分:

result = struct.pack('>L', some_integer)
for c in long_array_of_integers:
    result += struct.pack('b',c)
于 2009-10-06T19:38:13.697 回答