Python - Binascii 错误,而取消十六进制



我正在读出一个文件,计算可以与ord()函数一起使用的ord-number。

之后,我取消十六进制此数字以获取此字符的字节表示形式,因为我使用非 ASCII 字符并将其写入文件。

一切都很好,直到我读出一个"CR",也就是众所周知的回车。

我的程序引发错误:

Traceback (most recent call last):
  File "C:Users#######", line xx:
    x2 = binascii.unhexlify(format(Echr,"x"))
binascii.Error: Odd-length string

您知道为什么会出现此错误以及如何解决此问题吗?到目前为止,CR正在引发此错误。

您正在尝试将奇数长度的字符串传递给 unhexlify ,它只能成对处理十六进制字符。

如果您从 0-255 范围内的整数值生成十六进制,请确保用 0 填充十六进制字符串

x2 = binascii.unhexlify(format(Echr, "02x"))

02x格式告诉 format() 函数将您的数字放入宽度为 2 的字段中,如果实际值较短,则使用前导零:

>>> format(13, '02x')
'0d'
>>> binascii.unhexlify(format(10, '02x'))
'r'

但是,将binascii.unhexlifyformat()一起使用是创建字节的一种迂回方式。您可以跳过所有这些,直接转到 chr() 函数,该函数从整数生成一个字符:

>>> chr(13)
'r'

相关内容

  • 没有找到相关文章