1

遇到这个:

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 值?

4

1 回答 1

1

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

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

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

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

希望能帮助到你

于 2020-05-27T12:04:48.603 回答