Ошибка нечетной длины в binascii.unhexlify

Я пытаюсь преобразовать туда и обратно строку ASCII в ее двоичное представление следующим образом.

s=chr(0)*15 + chr(0x01)
bst = bin(int(binascii.hexlify(s), 16))
n = int(bst, 2)
binascii.unhexlify('%x' % n) 

Однако в конце я получаю следующую ошибку, которая не имеет для меня особого смысла.

1 binascii.unhexlify ('% x'% n)

Ошибка типа: строка нечетной длины

В чем проблема и как я могу ее решить?

1 ответ

Решение

Используя консоль python:

>>> help(binascii.unhexlify)

unhexlify(...)
    a2b_hex(hexstr) -> s; Binary data of hexadecimal representation.

    hexstr must contain an even number of hex digits (upper or lower case).
    This function is also available as "unhexlify()"

Таким образом, ошибка является последовательной. Что вам нужно сделать, это заполнить '0' иметь четное число:

>>> binascii.unhexlify('0%x' % n)
'\x01'
                n = int(wer, 2)

                qqwslenf=len(wer)
                qqwslenf=(qqwslenf/8)*2
                qqwslenf=str(qqwslenf)
                qqwslenf="%0"+qqwslenf+"x"


                jlz=binascii.unhexlify(qqwslenf % n)
                #we convert from binary to ASCII exactly size of need by half bytes.
Другие вопросы по тегам