Pythonで16進文字列をバイトに変換するにはどうすればいいですか? 質問する

Pythonで16進文字列をバイトに変換するにはどうすればいいですか? 質問する

異なるタイプの一連の値を表す長い 16 進文字列があります。生データから各値を抽出できるように、この 16 進文字列を または に変換する必要がありますbytesbytearrayどうすればいいでしょうか?

たとえば、文字列は"ab"バイトb"\xab"または同等のバイト配列に変換する必要があります。 より長い例:

>>> # what to use in place of `convert` here?
>>> convert("8e71c61de6a2321336184f813379ec6bf4a3fb79e63cd12b")
b'\x8eq\xc6\x1d\xe6\xa22\x136\x18O\x813y\xeck\xf4\xa3\xfby\xe6<\xd1+'

ベストアンサー1

16進文字列が次のようなものだとします

>>> hex_string = "deadbeef"

これをバイト配列に変換します (Python 3 および 2.7):

>>> bytearray.fromhex(hex_string)
bytearray(b'\xde\xad\xbe\xef')

それをバイトオブジェクトに変換します (Python 3):

>>> bytes.fromhex(hex_string)
b'\xde\xad\xbe\xef'

bytesは の不変バージョンであることに注意してくださいbytearray

それを文字列に変換します (Python ≤ 2.7):

>>> hex_data = hex_string.decode("hex")
>>> hex_data
"\xde\xad\xbe\xef"

おすすめ記事