2016-12-21 28 views
1

ASCII文字列を次のようにバイナリ表現に変換しようとしています。binascii.unhexlifyで奇妙な文字列エラー

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)

TypeError: Odd-length string

どうすれば解決できますか?

答えて

0

の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'