Python:binascii.a2b_hex报错“奇数长度字符串”
我有一个十六进制的值,是从一个文本文件中获取的,然后我把它传给a2b_hex这个函数,目的是把它转换成正确的二进制表示。下面是我写的代码:
k = open('./' + basefile + '.key', 'r')
k1 = k.read()
k.close()
my_key = binascii.a2b_hex(k1)
当我打印k1的时候,结果是我预期的:81e3d6df
但是我遇到了这个错误信息:
Traceback (most recent call last):
File "xor.py", line 26, in <module>
my_key = binascii.a2b_hex(k1)
TypeError: Odd-length string
有什么建议吗?谢谢!
4 个回答
3
read()
这个函数不会去掉换行符。如果你的文件最后有一个 '\n'
,那么它会保留在 k1
里面。
你可以试试 binascii.a2b_hex(k1.strip())
,或者也可以用 binascii.a2b_hex(k1[:8])
。
6
我怀疑文件的最后有一个多余的换行符。在把字符串传给 binascii
之前,先把它去掉。
另外,现在还有一个更简单的写法:k1.strip().decode('hex')
。
8
你确定这个文件里没有多余的东西吗?比如说空格之类的?
可以试试用 k1.strip()
这个方法。