Python で Hex を Base64 に変換する

Muhammad Maisam Abbas 2023年6月21日
  1. Python の codecs モジュールを使用して HEX を BASE64 に変換する
  2. Python の base64 モジュールを使用して HEX を BASE64 に変換する
  3. Python の binascii モジュールを使用して HEX を BASE64 に変換する
  4. Python2 で HEX を BASE64 に変換する
Python で Hex を Base64 に変換する

このチュートリアルでは、Python で 16 進数を base64 に変換する方法について説明します。

Python の codecs モジュールを使用して HEX を BASE64 に変換する

Python の codecs モジュール は、異なるテキスト エンコーディング形式間で変換するための encode() および decode() メソッドを提供します。

encode() 関数は 2つのパラメーターを取ります。 入力文字列と、その文字列をエンコードするために必要な形式。 この encode() 関数の戻り値の型は、2 番目のパラメーターで指定された形式でエンコードされた文字列です。

decode() 関数も 2つのパラメーターしか取りません。 エンコードされた入力文字列と、入力文字列がエンコードされる形式。 decode() 関数は、2 番目のパラメーターで指定された形式に従って、デコードされた文字列を返します。

16 進文字列を base64 文字列にエンコードするには、最初に decode() 関数で 2 番目のパラメーターとして hex を指定して、その 16 進文字列を通常の文字列にデコードします。 次に、第 2 パラメーターとして base64 を指定して、encode() 関数で前の操作の出力をエンコードします。

次のコード スニペットは、Python の codecs モジュールを使用して 16 進文字列を base64 文字列にエンコードするために必要な手順を詳しく説明しています。

import codecs

hex_string = "10000000000002ae"
b64_string = codecs.encode(codecs.decode(hex_string, "hex"), "base64").decode()
print(b64_string)

出力:

EAAAAAAAAq4=

上記のコードでは、16 進文字列 10000000000002aecodecs モジュールを使用して base64 文字列 EAAAAAAAAq4= にエンコードします。

Python の base64 モジュールを使用して HEX を BASE64 に変換する

異なるテキスト エンコーディング形式間で変換するための Python のもう 1つの便利なモジュールは base64 です。 base64 モジュール は、このタスクのために b64encode() および b64decode() 関数を提供します。

b64encode() 関数はバイト文字列を入力パラメータとして取り、それを base64 形式に変換し、base64 でエンコードされた文字列を返します。 同様に、b64decode() 関数は base64 でエンコードされた文字列を受け取り、それをバイト文字列に変換し、デコードされたバイト文字列を返します。

この特定の問題については、最初に bytes.fromhex() 関数を使用して入力文字列をバイト文字列に変換する必要があります。 次に、b64encode() 関数を使用して、そのバイト文字列を base64 文字列にエンコードします。

次のコード スニペットは、Python の base64 モジュールを使用して、16 進文字列を base64 文字列にエンコードする方法を示しています。

from base64 import b64encode, b64decode

hex_string = "10000000000002ae"
b64_string = b64encode(bytes.fromhex(hex_string)).decode()
print(b64_string)

出力:

EAAAAAAAAq4=

上記のコードでは、16 進文字列 10000000000002aebase64 モジュールを使用して base64 文字列 EAAAAAAAAq4= にエンコードします。

Python の binascii モジュールを使用して HEX を BASE64 に変換する

Python の binascii モジュールを使用して、異なるテキスト エンコーディング形式間で変換することもできます。 binascii モジュール は、このシナリオで使用できる unhexlify()b2a_base64() などの関数を提供します。

unhexlify() 関数は、16 進文字列を入力パラメーターとして受け取り、それをバイト文字列に変換して、結果を返します。 b2a_base64() 関数は、入力パラメーターとしてバイト文字列を受け取り、それを base64 文字列に変換して、結果を返します。

この特定の問題では、最初に unhexlify() 関数を使用して 16 進文字列をバイト文字列に変換し、次に b2a_base64() 関数を使用して前の操作の結果を base64 文字列に変換する必要があります。

次のコード例は、Python で binascii モジュールを使用して 16 進文字列を base64 に変換する方法を示しています。

from binascii import unhexlify, b2a_base64

hex_string = "10000000000002ae"
b64_string = b2a_base64(unhexlify(hex_string))
print(b64_string)

出力:

EAAAAAAAAq4=

上記のコードでは、binascii モジュールを使用して、16 進文字列 10000000000002ae を base64 文字列 EAAAAAAAAq4= にエンコードします。 上記で説明したすべてのメソッドの中で、binascii メソッドは最も簡単であり、実装するために最小限のコードを記述する必要があります。

Python2 で HEX を BASE64 に変換する

一方、16 進文字列と base64 文字列の両方をネイティブにサポートする Python2 を使用している場合は、必要なコードの量を大幅に削減できます。 次のコード スニペットは、Python2 で 16 進文字列を base64 文字列に変換する方法を示しています。

hex_string = "10000000000002ae"
b64_string = hex_string.decode("hex").encode("base64")
print(b64_string)

出力:

EAAAAAAAAq4=

Python2 は 16 進文字列と base64 文字列をネイティブにサポートしているため、上記のコードでモジュールをインポートする必要はありませんでした。 まず、decode("hex") 関数で 16 進文字列をバイト文字列に変換し、次に encode("base64") 関数でその出力を base64 にエンコードしました。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Python Hex