Python では 16 進値を文字列に変換する方法がいくつかあり、そのうちの 3 つを以下で説明します。
1. 使用bytes.fromhex()
方法
bytes.fromhex()
メソッドは、16 進文字列をバイト文字列に変換し、次にバイト文字列を文字列に変換します。例えば:
hex_str = "48656c6c6f20576f726c64"
byte_str = bytes.fromhex(hex_str)
str_result = byte_str.decode("utf-8")
print(str_result) # 输出:Hello World
このうち、bytes.fromhex()
メソッドは 16 進文字列をバイト文字列に変換し、byte_str.decode("utf-8")
メソッドはバイト文字列を文字列に変換します。
このメソッドはスペースのない 16 進文字列のみを処理できることに注意してくださいbytes.fromhex()
。入力された 16 進文字列にスペースが含まれている場合は、最初にスペースを削除する必要があります。次に例を示します。
hex_str = "48 65 6c 6c 6f 20 57 6f 72 6c 64"
hex_str = hex_str.replace(" ", "") # 删除空格
byte_str = bytes.fromhex(hex_str)
str_result = byte_str.decode("utf-8")
print(str_result) # 输出:Hello World
2. 使用binascii.unhexlify()
方法
binascii.unhexlify()
メソッドは、16 進文字列をバイト文字列に変換し、次にバイト文字列を文字列に変換します。例えば:
import binascii
hex_str = "48656c6c6f20576f726c64"
byte_str = binascii.unhexlify(hex_str)
str_result = byte_str.decode("utf-8")
print(str_result) # 输出:Hello World
このうち、binascii.unhexlify()
メソッドは 16 進文字列をバイト文字列に変換し、byte_str.decode("utf-8")
メソッドはバイト文字列を文字列に変換します。
このメソッドはスペースのない 16 進文字列のみを処理できることに注意してくださいbinascii.unhexlify()
。入力された 16 進文字列にスペースが含まれている場合は、最初にスペースを削除する必要があります。次に例を示します。
import binascii
hex_str = "48 65 6c 6c 6f 20 57 6f 72 6c 64"
hex_str = hex_str.replace(" ", "") # 删除空格
byte_str = binascii.unhexlify(hex_str)
str_result = byte_str.decode("utf-8")
print(str_result) # 输出:Hello World
3. 使用codecs.decode()
方法
codecs.decode()
メソッドは、16 進文字列を文字列に直接変換できます。例えば:
import codecs
hex_str = "48656c6c6f20576f726c64"
str_result = codecs.decode(hex_str, "hex").decode("utf-8")
print(str_result) # 输出:Hello World
このうち、codecs.decode()
16 進数の文字列を直接バイト文字列に変換するメソッドと、byte_str.decode("utf-8")
バイト文字列を文字列に変換するメソッドがあります。
このメソッドはスペースのない 16 進文字列のみを処理できることに注意してくださいcodecs.decode()
。入力された 16 進文字列にスペースが含まれている場合は、最初にスペースを削除する必要があります。次に例を示します。
import codecs
hex_str = "48 65 6c 6c 6f 20 57 6f 72 6c 64"
hex_str = hex_str.replace(" ", "") # 删除空格
str_result = codecs.decode(hex_str, "hex").decode("utf-8")
print(str_result) # 输出:Hello World
3 つの方法はすべて 16 進値を文字列に変換できます。どの方法を選択するかは、ユースケースと好みによって異なります。16 進文字列が無効な場合、これらのメソッドは例外をスローするため、入力された 16 進文字列の正当性をチェックする必要があることに注意してください。