15

私は次のような16進文字列を持っています:

data = "437c2123"

この文字列をASCIIテーブルに従って文字のシーケンスに変換したいと思います。結果は次のようになります。

data_con = "C|!#"

誰かがこれを行う方法を教えてもらえますか?

4

4 に答える 4

38

Python2の場合

>>> "437c2123".decode('hex')
'C|!#'

Python3の場合(Python2でも機能します。2.6未満の場合b、文字列の前に接頭辞を付けることはできません)

>>> import binascii
>>> binascii.unhexlify(b"437c2123")
b'C|!#'
于 2012-05-16T13:08:44.337 に答える
20
In [17]: data = "437c2123"

In [18]: ''.join(chr(int(data[i:i+2], 16)) for i in range(0, len(data), 2))
Out[18]: 'C|!#'

ここ:

  • for i in range(0, len(data), 2)data02などの2番目の位置ごとに繰り返します4
  • data[i:i+2]16進数のすべてのペアなどを調べ'43'ます'7c'
  • chr(int(..., 16))16進数のペアを対応する文字に変換します。
  • ''.join(...)文字を1つの文字列にマージします。
于 2012-05-16T12:35:45.990 に答える
-1

Python 2.6以降、単純に使用できます。

data_con = bytes.fromhex(data)
于 2014-01-06T08:21:33.053 に答える
-3

このord関数は文字を数値に変換し、chr関数はその逆を行います。したがって、に変換97するに"a"は、ord(97)

于 2012-05-16T12:36:03.000 に答える