Python 16進数の値を文字列に変換するには?

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 進文字列の正当性をチェックする必要があることに注意してください。

おすすめ

転載: blog.csdn.net/m0_72605743/article/details/129764199