- Published on
python3でhex(16進数)を文字列に変換する方法
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?