将大量参数传递给struct.pack

时间:2010-12-22 10:35:22

标签: python struct

我正在使用struct.pack方法,它接受可变数量的参数。我想将字符串转换为字节。如果字符串很短(例如'name'),我可以这样做:

bytes = struct.pack('4c','n','a','m','e')

但是当我的字符串长达80个字符时该怎么办?

我为struct.pack尝试过格式字符串's'而不是'80c',但结果与上面调用的结果不一样。

2 个答案:

答案 0 :(得分:1)

这没有多大意义。字符串在python 2.x中已经是字节;所以你可以这样做:

my_string = 'I am some big string'
my_bytes = my_string

在python 3上,默认情况下字符串是unicode对象。要获取字节,您必须对字符串进行编码。

my_bytes = my_string.encode('utf-8')

如果您真的要使用struct.pack,则* syntax使用described in the tutorial

my_bytes = struct.pack('20c', *my_string)

my_bytes = struct.pack('20s', my_string)

答案 1 :(得分:1)

使用“80s”,而不只是“s”。输入是单个字符串,而不是一系列字符。即。

bytes = struct.pack('4s','name')

请注意,如果指定的长度大于输入的长度,则输出将为空填充。