在Python 3中,我可以通过编码字符串来创建一个bytearray:
>>> foo = 'abc'
>>> bar = foo.encode('utf-8')
>>> bar
b'abc'
但是当我索引那个字节数组时,我得到了别的东西:
>>> bar[0]
97
这是什么,为什么不是
b'a'
答案 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中编码的相同。