gpt4 book ai didi

python - 在 Python2 和 Python3 中写入不同的十六进制值

转载 作者:太空宇宙 更新时间:2023-11-04 07:37:10 25 4
gpt4 key购买 nike

我目前正在将 Python2 脚本移植到 Python3 并且遇到了以下行的问题:

print('\xfe')

当我使用 Python2 python test.py > test.out 运行它时,文件包含十六进制值 FE 0A,正如预期的那样。

但是当我使用 Python3 python3 test.py > test.out 运行它时,该文件包含十六进制值 C3 BE 0A

这里出了什么问题?如何使用 Python3 接收所需的输出 FE 0A

最佳答案

字节序列 C3 BE 是字符 U+00FE 的 UTF-8 编码表示.

Python 2 将字符串作为字节序列而不是字符序列来处理。所以 '\xfe' 是一个包含一个字节的 str 对象。

在 Python 3 中,字符串是 (Unicode) 字符的序列。所以代码'\xfe' 是一个包含一个字符的字符串。当您打印字符串时,它必须被编码为字节。由于您的环境选择了默认编码 UTF-8,因此对其进行了相应编码。

如何解决这个取决于你的数据。是字节还是字符?如果是字节,则更改代码以告诉解释器:print(b'\xfe')。如果它是字符,但您想要不同的编码,则相应地对字符串进行编码:print( '\xfe'.encode('latin1') )

关于python - 在 Python2 和 Python3 中写入不同的十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32017389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com