Python - unhexlify 时出现 Binascii 错误
Python - Binascii Error while unhexlify
我正在读出一个文件,计算出可以与ord()函数一起使用的序数。
之后我对这个数字进行 unhexlify 以获得这个字符的字节表示,因为我使用非 ASCII 字符并将它们写入文件。
一切正常,直到我读出一个 "CR" 更广为人知的马车 return。
我的程序引发错误:
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 范围内的整数值生成十六进制,请确保 pad 您的十六进制字符串带有 0:
x2 = binascii.unhexlify(format(Echr, "02x"))
02x
格式告诉 format()
函数将您的数字放入宽度为 2 的字段中,如果实际值较短,则使用前导零:
>>> format(13, '02x')
'0d'
>>> binascii.unhexlify(format(10, '02x'))
'\r'
使用 binascii.unhexlify
和 format()
是创建字节的一种迂回方式。您可以跳过所有这些并直接转到 chr()
function,它从整数生成一个字符:
>>> chr(13)
'\r'
我正在读出一个文件,计算出可以与ord()函数一起使用的序数。
之后我对这个数字进行 unhexlify 以获得这个字符的字节表示,因为我使用非 ASCII 字符并将它们写入文件。
一切正常,直到我读出一个 "CR" 更广为人知的马车 return。
我的程序引发错误:
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 范围内的整数值生成十六进制,请确保 pad 您的十六进制字符串带有 0:
x2 = binascii.unhexlify(format(Echr, "02x"))
02x
格式告诉 format()
函数将您的数字放入宽度为 2 的字段中,如果实际值较短,则使用前导零:
>>> format(13, '02x')
'0d'
>>> binascii.unhexlify(format(10, '02x'))
'\r'
使用 binascii.unhexlify
和 format()
是创建字节的一种迂回方式。您可以跳过所有这些并直接转到 chr()
function,它从整数生成一个字符:
>>> chr(13)
'\r'