Python3 在打印十六进制值时添加了额外的字节

标签 python python-3.x python-2.x

我遇到了 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,在您的平台上,unicode 是使用 UTF-8 编码打印的。 unicode字符U+00A0的UTF-8编码是0xC2 0xA0,这就是你看到的。

Python 2 字符串是字节串,所以它们是准确输出的。

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

相关文章:

python - 如何不解压查询返回的所有内容?

python - 获取列表列表中的前一个元素

python - 如何递归读取目录中的所有 html 文件?

php - 如何从 php 调用 python 脚本

python - python中使用正则表达式判断变量类型

Python编码问题(Utf-8,匈牙利语)

python - 使用 Python 进行网页抓取,出现 HTTP 错误 404 : Not Found

python - 将 df1 与 df2 匹配并将其替换为索引值(非内部连接)

python - Kivy 复选框在 ScrollView 中不起作用

Python 2 和 3 兼容的使用键和值迭代字典的方式