我在python中使用此命令将int转换为字节:
a = 5
b = bytes(a, 'utf-8')
但是当我打印b
时,我得到了这个值:
b'\x00\x00\x00\x00\x00'
这段代码出了什么问题?
答案 0 :(得分:3)
bytes()
function documentation指向bytearray()
documentation,其中指出:
可选的 source 参数可用于以几种不同的方式初始化数组:
- [...]
- 如果是整数,则数组将具有该大小,并将使用空字节进行初始化。
您要求一个大小为5的bytes()
对象,初始化为空字节。
您可能希望先将a
转换为字符串:
bytes(str(a), 'utf-8')
演示:
>>> a = 5
>>> bytes(str(a), 'utf-8')
b'5'
如果您想要字节值5
(以及ENQ
ASCII control code或其他您可能想要它的意思),您需要将其a
放在列表中:
bytes([a])
(无需提供编码):
>>> bytes([a])
b'\x05'
答案 1 :(得分:0)
您正在创建一个长度为5的字节数组。
要获得数字5的二进制表示,您可以使用bin()
bin(5)
0b101