Pythonのbytes型は、バイナリデータを扱うための重要な機能です。ネットワーク通信、ファイル操作、暗号化など、様々な場面で活躍します。本記事では、bytes型の基本から応用まで、網羅的に解説していきます。
bytesは、0から255までの整数値を要素として持つ不変のシーケンスです。主にバイナリデータの表現に使用されます。
bytesオブジェクトを作成する方法はいくつかあります:
nb = b'Hello'
nb = bytes([72, 101, 108, 108, 111])
s = 'Hello'
b = s.encode('utf-8')
bytesとstr(文字列)の相互変換は頻繁に行われる操作です。
text = 'こんにちは'
byte_data = text.encode('utf-8')
decoded_text = byte_data.decode('utf-8')
bytesオブジェクトは、多くの文字列メソッドと同様の操作が可能です。
nb = b'Hello, World!'
print(b[7:12]) # b'World'
b1 = b'Hello'
b2 = b', World!'
b3 = b1 + b2
nb = b'apple,banana,orange'
fruits = b.split(b',')
バイナリファイルの読み書きにbytesは欠かせません。
data = bytes(range(256))
with open('binary.dat', 'wb') as f:
f.write(data)
with open('binary.dat', 'rb') as f:
content = f.read()
bytesと16進数表現の相互変換も簡単に行えます。
b = b'\x48\x65\x6c\x6c\x6f'
hex_string = b.hex()
hex_string = '48656c6c6f'
b = bytes.fromhex(hex_string)
bytesの操作時には、エンコーディングに関するエラーが発生する可能性があります。適切なエラー処理を行うことが重要です。
try:
text = b'\xff\xfe\xfd'.decode('utf-8')
except UnicodeDecodeError:
text = b'\xff\xfe\xfd'.decode('utf-8', errors='replace')
Pythonのbytes型は、バイナリデータを扱う上で非常に強力なツールです。文字列との相互変換、ファイル操作、16進数表現との変換など、多岐にわたる機能を提供します。本記事で紹介した基本的な使い方を押さえておけば、ほとんどの場面で適切にbytesを扱うことができるでしょう。バイナリデータを扱う際には、bytesの特性を理解し、適切に活用することが重要です。