首页 > Python标准库中关于bytearray.fromhex(string)的疑问

Python标准库中关于bytearray.fromhex(string)的疑问

在Python标准库中关于bytearray.fromhex(string):

>>> bytearray.fromhex('2Ef0 F1f2  ')
bytearray(b'.\xf0\xf1\xf2')
编写了如下的测试代码:
>>> bytes.fromhex(b'\x2e'.hex())
b'.'

问题:

  1. 这是否说明hex和fromhex并不存在如下的关系: fromhex(hex(x)) != x

  2. 为什么2E没有转换为\x2e?


这是否说明hex和fromhex并不存在如下的关系: fromhex(hex(x)) != x

否。fromhex(hex(x)) == x。原因见下。

为什么2E没有转换为\x2e?

因为句点.对应的 ASCII 为 0x2e,而在 Python 控制台中,二进制串按每 8 bits 一组,如果能对应于可显示的 ASCII 字符,就自动显示为对应的 ASCII 字符,否则显示为\x??的两位十六进制数。所以你会看到输入输出显示的不同,但实际数据是一样的。

【热门文章】
【热门文章】