为什么字节(5)返回b' \ x00 \ x00 \ x00 \ x00 \ x00'而不是b' \ x05'?

时间:2014-11-27 20:37:30

标签: python byte

我在python中使用此命令将int转换为字节:

a = 5
b = bytes(a, 'utf-8')

但是当我打印b时,我得到了这个值:

b'\x00\x00\x00\x00\x00'

这段代码出了什么问题?

2 个答案:

答案 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