Python で 16 進数をバイトに変換する
- 16 進値を初期化する
-
Python で
bytes.fromhex()
を使用して 16 進数をバイトに変換する -
Python で 16 進数をバイトに変換するには
unhexlify
モジュールを使用する
このチュートリアルでは、Python で 16 進値をバイトリテラルに変換する方法を紹介します。
16 進数または 16 進値とは、10 進値の通常の 10 個の記号の代わりに 16 個の記号で構成された数値を表現したものです。0 から 9 までの数字と a
から e
までの文字が 16 の 16 進数記号を構成しています。
例えば、1000
の 16 進変換は 3E8
です。
16 進値を初期化する
文字列を使って 16 進値を作成し、binascii
モジュールの関数 hexlify()
を使って A quick brown fox
というフレーズを 16 進値に変換してみましょう。
また、文字列を 16 進数に変換するには、文字列をバイトに変換して 16 進数に変換できるようにする必要があります。
import binascii
str_val = "A quick brown fox".encode("utf-8")
hex_val = binascii.hexlify(str_val).decode("utf-8")
print(hex_val)
出力:
4120717569636b2062726f776e20666f78
文字列を 16 進数に変換できたので、次に 16 進数をバイトに変換する方法を説明します。
Python で bytes.fromhex()
を使用して 16 進数をバイトに変換する
関数 bytes.fromhex()
は 16 進値を 1つ受け取り、それをバイトリテラルに変換します。
前の結果から 16 進値を取り出し、fromhex()
を用いてバイトリテラルに変換します。
hex_val = "4120717569636b2062726f776e20666f78"
print(bytes.fromhex(hex_val))
出力:
Byte value: b'A quick brown fox'
これは、値が bytes
リテラルであることを指定するために文字 b
を先頭にして 16 進数に変換したものです。
Python で 16 進数をバイトに変換するには unhexlify
モジュールを使用する
Python モジュールの binascii
には、バイナリと ASCII 演算のための効率的なユーティリティ関数が含まれています。unhexlify()
は binascii
モジュール内の関数で、16 進値をバイトリテラルに変換します。
新しい例を非 ASCII 文字で初期化して、16 進値に変換してみましょう。この例では、a quick brown fox
というフレーズのギリシャ語翻訳を行います。
import binascii
from binascii import unhexlify
str_val = "Μια γρήγορη καφέ αλεπού".encode(
"utf-8"
) # A quick brown fox in Greek translation
hex_val = binascii.hexlify(str_val).decode("utf-8")
print("String value: ", str_val.decode("utf-8"))
print("Hexadecimal: ", hex_val)
print("Byte value: ", unhexlify(hex_val))
出力:
String value: Μια γρήγορη καφέ αλεπού
Hexadecimal: ce9cceb9ceb120ceb3cf81ceaeceb3cebfcf81ceb720cebaceb1cf86cead20ceb1cebbceb5cf80cebfcf8d
Byte value: b'\xce\x9c\xce\xb9\xce\xb1 \xce\xb3\xcf\x81\xce\xae\xce\xb3\xce\xbf\xcf\x81\xce\xb7 \xce\xba\xce\xb1\xcf\x86\xce\xad \xce\xb1\xce\xbb\xce\xb5\xcf\x80\xce\xbf\xcf\x8d'
これで、16 進値をバイトに変換することができました。
この記事では、fromhex()
と binascii.unhexlify()
を使って Python で 16 進数をバイトリテラルに変換する方法を説明しました。ソースコードにインポートを追加したくない場合は fromhex()
の方が良いでしょう。そうでなければ、どちらの関数も同じ出力を提供します。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn関連記事 - Python Bytes
- Python バイトを整数に変換する方法
- Python 2 および Python 3 で Int をバイトに変換する方法
- Python で Int をバイナリに変換する方法
- Python 2 および Python 3 でバイトを文字列に変換する方法
- Python でバイトを 16 進数に変換する