目次
はじめに
Pythonにはさまざまなデータ型があり、その中でもbytes
型はバイナリデータを扱う際に重要な役割を果たします。本記事では、bytes
関数の基本から応用まで詳しく解説します。初心者の方でも理解しやすいように、実際の使用例とともに紹介していきます。
bytes関数とは?
bytes
関数は、バイト列(バイナリデータ)を生成するための組み込み関数です。Pythonでは文字列はstr
型として扱われますが、バイナリデータを操作する場合はbytes
型を使用する必要があります。特に、ファイルの読み書きやネットワーク通信などで活用されます。
bytes関数の基本構文
bytes
関数の基本的な構文は以下の通りです。
bytes([source[, encoding[, errors]]])
主な使い方として、次のようなものがあります。
- 引数なしで呼び出す → 空のバイト列を作成
- 整数を指定する → 指定した長さのゼロバイト列を作成
- イテラブルオブジェクトを渡す → 各要素をバイト列に変換
- 文字列とエンコーディングを指定する → 指定したエンコーディングで文字列をバイト列に変換
bytes関数の使用例
1. 空のバイト列を作成
empty_bytes = bytes()
print(empty_bytes) # 出力: b''
2. 指定した長さのゼロバイト列を作成
zero_bytes = bytes(5)
print(zero_bytes) # 出力: b'\\x00\\x00\\x00\\x00\\x00'
3. リストやタプルをバイト列に変換
byte_list = bytes([65, 66, 67])
print(byte_list) # 出力: b'ABC'
4. 文字列をバイト列に変換
string_bytes = bytes("こんにちは", "utf-8")
print(string_bytes) # 出力: b'\\xe3\\x81\\x93\\xe3\\x82\\x93\\xe3\\x81\\xab\\xe3\\x81\\xa1\\xe3\\x81\\xaf'
bytes関数の応用例
1. バイナリファイルの書き込み
with open("example.bin", "wb") as file:
file.write(bytes([72, 101, 108, 108, 111])) # "Hello"のバイナリデータを保存
2. ネットワーク通信(ソケット通信)
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("example.com", 80))
sock.sendall(bytes("GET / HTTP/1.1\\r\\nHost: example.com\\r\\n\\r\\n", "utf-8"))
response = sock.recv(1024)
print(response)
sock.close()
3. Base64エンコード
import base64
original_bytes = bytes("Python", "utf-8")
encoded_bytes = base64.b64encode(original_bytes)
print(encoded_bytes) # 出力: b'UHl0aG9u'
まとめ
本記事では、Pythonのbytes
関数について詳しく解説しました。
bytes
関数はバイナリデータを扱うために重要- 引数の種類によって異なるバイト列を作成可能
- ファイル操作やネットワーク通信などで活用される
Pythonでバイナリデータを扱う際は、ぜひbytes
関数を活用してみてください。