TypeError:解码十六进制字符串时的奇数长度字符串,迭代仅使用for循环到列表中的一个点

时间:2015-03-03 21:42:38

标签: python string python-2.7 hex bitwise-xor

我在解码HEX字符串方面遇到了一些麻烦,我得到了

    Traceback (most recent call last):
key : a

output = output.decode("hex")
HEX : 
  File "C:\Python27\lib\encodings\hex_codec.py", line 42, in hex_decode
 output = binascii.a2b_hex(input)
TypeError: Odd-length string

我尝试了一些方法来解决它,但似乎没有任何工作。 此外,当迭代一些打印没有解码的东西时,循环崩溃在g字母。 任何线索?

My Code:
key1 = "1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736"
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
        'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
key1 = int(key1, 16)
for letter in alphabet:
    print "-------------------"
    print "key : " + letter
    print "-------------------"
    print "HEX : "
    key2 = int(letter, 16)
    result = key1 ^ key2
    result =hex(result)
    output = str(result)
    output = output.decode("hex")
    print output

1 个答案:

答案 0 :(得分:0)

如果字符串长度均匀但仍显示Odd-Length TypeError,则必须是由于前导或尾随空格。 要删除它们: S =" abcd" s.strip()

要仅删除尾随空格,请使用s.rstrip()