在Python 3中,当我索引bytearray时会发生什么?

时间:2014-07-22 03:10:56

标签: python-3.x character-encoding bytearray

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

>>> foo = 'abc'
>>> bar = foo.encode('utf-8')
>>> bar
b'abc'

但是当我索引那个字节数组时,我得到了别的东西:

>>> bar[0]
97

这是什么,为什么不是

b'a'

3 个答案:

答案 0 :(得分:2)

这是一个小int,因为这是PEP 3137: "Immutable Bytes and Mutable Buffer"中定义索引字节的方式。

  

索引

     

索引字节和bytearray返回小的整数[...]

     

对bytearray对象的项的赋值接受范围内的int(256)。 [...]

如果您想要b'a',请改为切片。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

值97是字符a的UTF-8编码。最常见的字符以UTF-8编码,其编码方式与ASCII中编码的相同。