TypeError: строка нечетной длины при декодировании шестнадцатеричной строки и повторении цикла for только до одной точки в списке

У меня есть некоторые проблемы с декодированием строк 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

Я пробовал некоторые методы, чтобы решить эту проблему, но ничего не работает. Также, когда я выполняю некоторые печати без декодирования, цикл прерывается при данной букве. какие-нибудь подсказки?

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 ответ

Если строка имеет четную длину, но все еще отображается TypeError с нечетной длиной, это должно быть из-за начальных или конечных пробелов. Чтобы удалить их: s=" abcd " s.strip()

Чтобы удалить только конечные пробелы, используйте s.rstrip()

Другие вопросы по тегам