Published on

python3でhex(16進数)を文字列に変換する方法

Authors
  • avatar
    Name
    ssu
    Twitter

python3で16進数化されたバイト文字列を文字列に変換する方法を紹介します。 変換自体はとても簡単でbytes.fromhexを使うことができます。

バイト文字列の16進数を文字列に変換する場合

bytes.fromhexでは、引数に文字列をとるので、バイト文字列の場合は deocdeしてあげる必要があります。

hex_bytes = b'707974686f6e33e381a7737472696e67e38292686578e5a489e68f9b' hex_str = hex_bytes.decode("utf-8") #> '707974686f6e33e381a7737472696e67e38292686578e5a489e68f9b' bytes.fromhex(hex_bytes) #>バイト文字列 b'python3\xe3\x81\xa7string\xe3\x82\x92hex\xe5\xa4\x89\xe6\x8f\x9b' bytes.fromhex(hex_str).decode('utf-8') #> 'python3でstringをhex変換'

16進数の文字列を文字列に変換する場合

bytes.fromhexでは、引数に文字列をとるので、16進数の文字列の場合は、 そのまま引数に渡せてあげればできます。

hex_str = '707974686f6e33e381a7737472696e67e38292686578e5a489e68f9b' bytes.fromhex(hex_bytes) #>バイト文字列 b'python3\xe3\x81\xa7string\xe3\x82\x92hex\xe5\xa4\x89\xe6\x8f\x9b' bytes.fromhex(hex_str).decode('utf-8') #> 'python3でstringをhex変換'

参考: What's the correct way to convert bytes to a hex string in Python 3?

python3で文字列をhexに変換する方法