17

binascii が探しているモジュールだと思っていますが、探している正確な結果が得られないようです。

これが私がやりたいことです。変換したい:

>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> print len(s)
40

>>> hs = '\x35\x6a\x19\x2b\x79\x13\xb0\x4c\x54\x57\x4d\x18\xc2\x8d\x46\xe6\x39\x54\x28\xab'
>>> print len(hs)
20

これを行うクールな (または、率直に言って機能的な) 方法を知っている Pythonista はいますか?

4

2 に答える 2

21

Python のすべてのバージョンで、次の関数 binascii.a2b_hex()( とも呼ばれますbinascii.unhexlify())を使用できます。

>>> import binascii
>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> binascii.a2b_hex(s)
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab'

Python 3.x では、を使用できますbytes.fromhex(s)

Python 2.x ではhexstr-to-str コーデックを使用できます。

>>> s.decode("hex")
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab'

コーデックは内部的に を呼び出しますbinascii.a2b_hex()

于 2012-05-30T21:11:36.023 に答える
4

モジュールbinasciiあり:

>>> from binascii import unhexlify
>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> unhexlify(s)
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab'
于 2012-05-30T21:18:10.503 に答える