要将字符串转换为Python 2或Python 3中的字节序列,请使用字符串的encode
方法。如果您不提供编码参数'ascii'
,则该参数对于数字总是足够的。
s = str(n).encode()
在Python 2中str(n)
已经产生了字节;该encode
会是一个双转换与此字符串隐式转换为Unicode,然后再返回到字节。这是不必要的工作,但它无害且与Python 3完全兼容。
上面是对实际提出的问题的答案,该问题是生成人类可读形式的ASCII字节字符串。但是由于人们不断来这里试图获得 另一个 问题的答案,所以我也会回答这个问题。如果您想转换10
以b'10'
使用上面的答案,但是如果您想转换10
以b'\x0a\x00\x00\x00'
继续阅读。
该struct
模块专门用于在各种类型及其二进制表示形式(字节序列)之间进行转换。从类型到字节的转换是通过完成的struct.pack
。有一个format参数fmt
确定应执行的转换。对于4字节整数,它将i
用于有符号数或I
无符号数。有关更多可能性,请参见格式字符表,如果输出大于单个字节,请参见字节顺序,大小和对齐表以获取选项。
import struct
s = struct.pack('<i', 5) # b'\x05\x00\x00\x00'