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
值?)
同样,这两个字节的大小都是?看起来第二个有两个字符==两个字节,但我可能错了......
答案 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