我正在使用struct.pack方法,它接受可变数量的参数。我想将字符串转换为字节。如果字符串很短(例如'name'),我可以这样做:
bytes = struct.pack('4c','n','a','m','e')
但是当我的字符串长达80个字符时该怎么办?
我为struct.pack尝试过格式字符串's'而不是'80c',但结果与上面调用的结果不一样。
答案 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')
请注意,如果指定的长度大于输入的长度,则输出将为空填充。