Python base64
base64 モジュール
Base64とは?
Base64は、バイナリデータをASCII文字列に変換するエンコーディング方式の一つです。主に以下の目的で使用されます:
1. データの転送:
• バイナリデータをテキスト形式に変換することで、メールやHTTPなどのテキストベースのプロトコルでデータを安全に転送できます。
2. データの保存:
• データベースやテキストファイルにバイナリデータを保存する際に、エンコーディングしてテキスト形式に変換します。
3. 互換性の確保:
• 特定のシステムやアプリケーションでバイナリデータを扱えない場合、エンコードして互換性を確保します。
Base64の基本
Base64は、以下の64文字を使用してデータをエンコードします:
• アルファベットの大文字(A-Z)
• アルファベットの小文字(a-z)
• 数字(0-9)
• 記号(+、/)
バイナリデータを6ビットごとに分割し、それぞれのビットをBase64の文字セットにマッピングします。
4.1 Base64エンコード
バイナリデータをBase64形式にエンコードします。
例:Base64エンコード
import base64
# バイナリデータ
data = b"Hello, world!"
# Base64エンコード
encoded_data = base64.b64encode(data)
print(encoded_data) # b'SGVsbG8sIHdvcmxkIQ=='
4.2 Base64デコード
Base64形式のデータを元のバイナリデータにデコードします。
例:Base64デコード
import base64
# Base64エンコードされたデータ
encoded_data = b'SGVsbG8sIHdvcmxkIQ=='
# Base64デコード
decoded_data = base64.b64decode(encoded_data)
print(decoded_data) # b'Hello, world!'
4.3 テキストデータのエンコードとデコード
テキストデータをBase64エンコードしてからデコードする例を示します。
例:テキストデータのエンコードとデコード
import base64
# テキストデータ
text = "Pythonは楽しい!"
# テキストデータをバイト列に変換
text_bytes = text.encode('utf-8')
# Base64エンコード
encoded_text = base64.b64encode(text_bytes)
print(encoded_text) # b'UGl0aG9u44Gn5qCh44GS44KK44Gq44GM77yB'
# Base64デコード
decoded_bytes = base64.b64decode(encoded_text)
decoded_text = decoded_bytes.decode('utf-8')
print(decoded_text) # Pythonは楽しい!
Base64の使用例
1. バイナリファイルのエンコードとデコード
画像や音声ファイルなどのバイナリデータをBase64エンコードして保存し、後でデコードして使用することができます。
例:画像ファイルのエンコードとデコード
import base64
# 画像ファイルの読み込み
with open('example.png', 'rb') as image_file:
image_data = image_file.read()
# Base64エンコード
encoded_image = base64.b64encode(image_data)
print(encoded_image)
# Base64デコード
decoded_image = base64.b64decode(encoded_image)
# デコードした画像データを新しいファイルに保存
with open('decoded_example.png', 'wb') as image_file:
image_file.write(decoded_image)
2. HTTPリクエストでの使用
HTTPリクエストで認証情報を送信する際、Base64エンコードが使用されることがあります。
例:HTTP基本認証でのBase64エンコード
import base64
import urllib.request
# ユーザー名とパスワード
username = 'user'
password = 'pass'
# 認証情報をBase64エンコード
credentials = f"{username}:{password}"
encoded_credentials = base64.b64encode(credentials.encode('utf-8')).decode('utf-8')
# リクエストヘッダーに認証情報を追加
headers = {'Authorization': f'Basic {encoded_credentials}'}
# リクエストの送信
request = urllib.request.Request('http://www.example.com', headers=headers)
with urllib.request.urlopen(request) as response:
content = response.read()
print(content)
まとめ
Base64は、バイナリデータをテキスト形式に変換するエンコーディング方式であり、データの転送や保存、互換性の確保に役立ちます。base64 モジュールを使用することで、簡単にデータのエンコードとデコードが行えます。
この記事が気に入ったらサポートをしてみませんか?