我遇到了Python2和Python3之间的奇怪差异。使用Python3打印时,打印相同的字符列表会产生一个额外的字节C2。我本来期望相同的行为。 Python2的行为符合我的预期。我在这里想念什么?

$ python3 -c "print('\x30\xA0\x04\x08')" | xxd
0000000: 30c2 a004 080a
$ python2 -c "print('\x30\xA0\x04\x08')" | xxd
0000000: 30a0 0408 0a

最佳答案

Python 3字符串是unicode,并且在您的平台上使用utf-8编码来打印unicode。 Unicode字符U + 00A0的UTF-8编码为0xC2 0xA0,这就是您所看到的。

Python 2字符串是字节字符串,因此它们的输出准确无误。

关于python - 在打印十六进制值时,Python3增加了额外的字节,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28429062/

10-15 08:50