Python 3正确地将整数转换为字节:

时间:2014-08-25 23:53:58

标签: python utf-8 byte

this question的答案使得看起来有两种方法可以将整数转换为Python 3中的bytes对象。它们显示

s = str(n).encode()

n = 5    
bytes( [n] )

是一样的。但是,显示返回值的测试不同:

print(str(8).encode()) 
#Prints b'8' 

print(bytes([8])) #prints b'\x08'

我知道第一种方法将int 8更改为字符串(我相信utf-8),其十六进制值为56,但第二种方法是什么打印?那只是8的十六进制值吗? (退格的utf-8值?)

同样,这两个字节的大小都是?看起来第二个有两个字符==两个字节,但我可能错了......

2 个答案:

答案 0 :(得分:3)

b'8'是一个bytes对象,其中包含一个字符'8'的单字节,该字节等于56

b'\x08'bytes对象,其中包含值为8的单个字节,与0x8相同。

答案 1 :(得分:2)

这两个例子是不是等价的。 str(n).encode()接受您提供的任何内容,将其转换为字符串表示形式,然后使用类似utf8的字符编解码器进行编码。 bytes([..])将形成一个bytestring,其中包含给定数组的字节值。表示\xFF实际上是单个字节值的十六进制表示。

>>> str(8).encode()
b'8'
>>> b'8' == b'\x38'
True