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

0 投票
2 回答
1929 浏览
提问于 2025-04-18 02:37

比如说,当 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) 可以用来获取它的长度。

撰写回答