Python でバイトを 16 進数に変換する
- Python でバイトリテラルを初期化する
-
Python でバイトを 16 進数に変換するには
hex()
メソッドを使用する -
Python でバイトを 16 進数に変換するには
binascii
モジュールを使用する
このチュートリアルでは、Python でバイトを 16 進数に変換する方法を紹介します。
Python におけるバイトデータ型とは、ディスク上に変数として格納しておき、それをエンコードしたりデコードしたりすることができるバイト列のことです。バイトデータ型は文字列のように宣言されますが、プレフィックスは文字 b
です。バイトは、\x
で始まる特殊な Unicode 文字を受け付けます。
Python でバイトリテラルを初期化する
バイトリテラルの例を示し、特殊文字を含む文字列を宣言し、関数 encode('utf-8')
を用いてバイトリテラルに変換します。
byte_var = "γιαούρτι - yogurt".encode("utf-8")
print(byte_var)
出力:
b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
encode()
の出力は、バイトリテラルの前に文字 b
を付加し、特殊文字を Unicode シンボルに変換したものです。
ここまででバイトの宣言を説明したので、バイトを 16 進数に変換してみよう。
Python でバイトを 16 進数に変換するには hex()
メソッドを使用する
Python 3.5 から導入された hex()
メソッドは 16 進数の文字列に変換します。
この場合、引数は 16 進数に変換するバイトデータ型になります。
byte_var = "γιαούρτι - yogurt".encode("utf-8")
print("Byte variable: ", byte_var)
print("Hexadecimal: ", byte_var.hex())
出力:
Byte variable: b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
Hexadecimal: ceb3ceb9ceb1cebfcf8dcf81cf84ceb9202d20796f67757274
Python でバイトを 16 進数に変換するには binascii
モジュールを使用する
Python モジュール binascii
には、バイナリや ASCII 操作のための効率的なユーティリティ関数が含まれています。
このモジュール内には、与えられた引数の 16 進数の値(バイナリ値)を返す関数 hexlify()
があります。
この例では、引数は 16 進数に変換されるバイト変数になります。
import binascii
byte_var = "γιαούρτι - yogurt".encode("utf-8")
print("Byte variable: ", byte_var)
print("Hexadecimal: ", binascii.hexlify(byte_var))
出力:
Byte variable: b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
Hexadecimal: b'ceb3ceb9ceb1cebfcf8dcf81cf84ceb9202d20796f67757274'
変換された文字列を返す hex()
とは異なり、hexlify()
の戻り値はバイトリテラルを返すことに注意してください。
結果を文字列に変換したい場合は、関数 decode('utf-8')
を用います。
import binascii
byte_var = "γιαούρτι - yogurt".encode("utf-8")
print("Byte variable: ", byte_var)
print("Hexadecimal: ", "" + binascii.hexlify(byte_var).decode("utf-8"))
出力:
Byte variable: b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
Hexadecimal: ceb3ceb9ceb1cebfcf8dcf81cf84ceb9202d20796f67757274
これで 16 進数の結果がバイトリテラルから文字列に変換された。
まとめると、Python でバイトを 16 進数に変換する方法を 2つ取り上げました。最も簡単な方法は、組み込みの関数 hex()
をバイトリテラルに利用する方法です。あるいは、binascii
モジュールの hexlify()
関数を使って同じ出力を生成することもできます。
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 進数をバイトに変換する