Python - Binascii在unhexlify时出错

时间:2016-05-23 12:11:04

标签: 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正在提出这个错误。

1 个答案:

答案 0 :(得分:1)

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

如果您使用0-255范围内的整数值生成十六进制,请确保 pad 您的十六进制字符串为0:

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

02x格式化告诉format()函数使您的数字适合宽度为2的字段,如果实际值更短,则前导零:

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

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

>>> chr(13)
'\r'