如何在Python中使用struct.pack()打包可变长度列表
比如说,当 len(args) = 2 的时候:
args = []
args.append('arg1')
args.append('argument2')
bytes = struct.pack('B' * len(args), len(args[0]), len(args[1]))
不过,我需要处理可变长度的参数,也就是说 len(args) = n,其中 n 是任何正整数。
2 个回答
0
你可能应该在输出中加一个长度字段,这样你就知道要读取多少个东西了。或者说,可以先用一个“字符串数量”,然后再跟着每个字符串的长度,比如“字符串1的长度”、“字符串2的长度”,一直到“字符串n的长度”。
3
试试这个:
bytes = struct.pack('B' * len(args), *[len(x) for x in args])
来解释一下这个:
struct.unpack('B' * len(bytes), bytes)
因为 'B'
代表的是 1字节的无符号字符,所以 len(bytes)
可以用来获取它的长度。