python 3 中字节数组索引的行为

Behavior of byte arrays indexing in python 3

运行 穿​​过这个:

import sys; print('Python %s on %s' % (sys.version, sys.platform))
Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] on win32
b'\n' == b'\n'
True # well obviously
b'\n'[-1] == b'\n'
False # huh?
bytes(b'\n'[-1]) == b'\n'
False
b'\n'[-1] == 10
True

因此,当在字节数组中建立索引时,我们似乎得到了一个整数值 - 为什么会这样,我应该如何比较这些值,这样我就不必显式地插入字节字符串元素的 ascii 值?

当您执行 b'\n' 时,您创建了一个包含一个值 10 的字节实例。
当您访问字节实例的元素时,将按预期返回一个 int(一个字节是一个 8 位无符号整数)。

因此 b'\n'[-1] == b'\n'False 是有道理的,值 10 不同于包含一个字节的字节实例

当您将 bytes 构造函数与 int 一起使用时,它会创建一个以零填充的字节实例,其大小为您作为输入提供的大小 (python doc)。

因此bytes(b'\n'[-1]) == b'\n'也是有道理的,一个10个字节的值0的列表不等于一个只有10个字节的列表。

希望对您有所帮助