Python 将大量参数传递给struct.pack

Python 将大量参数传递给struct.pack,python,struct,Python,Struct,我使用的是struct.pack方法,它接受可变数量的参数。我想把字符串转换成字节。如果字符串很短(例如“name”),我可以这样做: bytes = struct.pack('4c','n','a','m','e') 但是当我的字符串长度为80个字符时该怎么办 我尝试了struct.pack的格式字符串“s”,而不是“80c”,但结果与上面调用的结果不一样。这没有多大意义。在Python2.x中,字符串已经是字节;所以你可以这样做: my_string = 'I am some big st

我使用的是struct.pack方法,它接受可变数量的参数。我想把字符串转换成字节。如果字符串很短(例如“name”),我可以这样做:

bytes = struct.pack('4c','n','a','m','e')
但是当我的字符串长度为80个字符时该怎么办


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

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

my_string = 'I am some big string'
my_bytes = my_string
在Python3上,默认情况下字符串是unicode对象。要获取字节,必须对字符串进行编码

my_bytes = my_string.encode('utf-8')
如果您真的想使用
struct.pack
,您可以使用
*语法作为:

使用“80s”,而不仅仅是“s”。输入是单个字符串,而不是一系列字符。i、 e

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

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

推测最终会有其他结构格式的字段(即与问题无关的字段)。如果不是,是的,这是毫无意义的:)@axw:那么OP应该在问题中这样说。
my_bytes = struct.pack('20s', my_string)
bytes = struct.pack('4s','name')