Python 3.x 在Python3中,索引bytearray时会发生什么?

Python 3.x 在Python3中,索引bytearray时会发生什么?,python-3.x,character-encoding,bytearray,Python 3.x,Character Encoding,Bytearray,在Python 3中,我可以通过编码字符串来创建bytearray: >>> foo = 'abc' >>> bar = foo.encode('utf-8') >>> bar b'abc' 但是,当我为该字节数组编制索引时,我得到了一些其他信息: >>> bar[0] 97 这是什么?为什么不是 b'a' 字节数组是数据,而不是字符,因此单个元素的值为0-255。值97是字符a的UTF-8编码。大多数常见字符的编码方

在Python 3中,我可以通过编码字符串来创建bytearray:

>>> foo = 'abc'
>>> bar = foo.encode('utf-8')
>>> bar
b'abc'
但是,当我为该字节数组编制索引时,我得到了一些其他信息:

>>> bar[0]
97
这是什么?为什么不是

b'a'

字节数组是数据,而不是字符,因此单个元素的值为0-255。

值97是字符
a
的UTF-8编码。大多数常见字符的编码方式与UTF-8相同。

这是一个小整数,因为索引字节就是这样定义的

索引 索引字节和字节数组返回小整数[…]

对bytearray对象项的赋值接受范围(256)内的整数。[……]

如果你想要
b'a'
,那就切片吧

3>> b'abc'[0:1]
b'a'