如何在Python中使用struct.pack()一个可变长度列表

时间:2014-04-14 01:05:17

标签: python

例如当len(args)= 2:

args = []
args.append('arg1')
args.append('argument2')

bytes = struct.pack('B' * len(args), len(args[0]), len(args[1]))

但是,我需要处理可变长度的args,即len(args)= n,其中n是任何正整数。

2 个答案:

答案 0 :(得分:3)

尝试:

bytes = struct.pack('B' * len(args), *[len(x) for x in args])

解压缩:

struct.unpack('B' * len(bytes), bytes)

因为'B'表示 1字节无符号字符len(bytes)可以是它的长度。

答案 1 :(得分:0)

您可能应该在输出中添加一个长度字段,这样您就可以知道要读回多少内容。或者更确切地说使用"字符串数量"后跟" string1"的长度," string2的长度",...," stringn的长度"。