我正在使用python3.5,让
M = '\x09\x00\x00\x00\x01\x89\x02\xdb\xd6\x01\x49\x63\x74'
为什么以下比较的左侧部分不等于右侧部分?
> M.encode() == b'\x09\x00\x00\x00\x01\x89\x02\xdb\xd6\x01\x49\x63\x74'
$ FALSE
两者的类型是bytes
。如何从M
到达包含上述比较的正确部分的变量?
答案 0 :(得分:2)
不是编码专家,但无论您选择何种编码,如果不正确,它都会解释字符,结果与字节对象不同。
它适用于纯粹的ascii,但是你的值不会。
一种方法是从bytes
提供的字符代码重建ord
对象:
M = '\x09\x00\x00\x00\x01\x89\x02\xdb\xd6\x01\x49\x63\x74'
N = b'\x09\x00\x00\x00\x01\x89\x02\xdb\xd6\x01\x49\x63\x74'
M2 = bytes(map(ord,M))
print(N == M2)
收益率True
:)