我很难理解为什么以及为什么有些Python字节字符串中有
\x
,而其他的则没有。
比如我有这样的断言:
AssertionError:
actual b'00000001'
expected b'\x00\x00\x00\x01'
为什么它们不相等?它们都是字节字符串,长度为 4 个字节,值为 1。如何使它们看起来相同,以及如何使它们“成为”相同?似乎一个来自字符串字符串,另一个来自整数 - 但为什么它们转换为字节时结果不一样?
希望我没有错过其他东西。
谢谢
它们不是同一件事。
\x
表示十六进制值。
如果没有
\x
,它只是一个原始字节字符串,每个字符代表它自己的整数值。
演示:
>>> a = b'00000001'
>>> b = b'\x00\x00\x00\x01'
>>> int.from_bytes(a, 'little')
3544385890265608240
>>> int.from_bytes(b, 'little')
16777216
>>> len(a)
8
>>> len(b)
4
>>> a.hex()
'3030303030303031'
>>> b.hex()
'00000001'
>>> a[0]
48
>>> b[0]
0
此外,由于我们从上面可以看到,
b'0'
由48
表示,并且由于48 = 16*3
,这意味着b'\x30'
应该等于b'0'
>>> b'0' == b'\x30'
True
?????? (EMT)。是的。每周 360 小时 每周 00:00 11:59 18:00 开始