Python 3では、bytes
とbytearray
という2つのデータ型があります。これらはどちらもバイトの配列を保持しますが、それぞれのバイトは0から255の値を取ることができます。
bytes
オブジェクトはイミュータブル(不変)で、一度作成するとその要素を変更することはできません。一方、bytearray
オブジェクトはミュータブル(可変)で、その要素を変更することが可能です。
bytes
とbytearray
は、文字列をエンコードおよびデコードする関数を提供します。
# bytesの作成
b = bytes(5) # b'\x00\x00\x00\x00\x00'
b = bytes([116, 117, 118]) # b'tuv'
b = bytes('tuv', 'utf-8') # b'tuv'
b = 'tuv'.encode('utf-8') # b'tuv'
# bytearrayの作成
ba = bytearray(5) # bytearray(b'\x00\x00\x00\x00\x00')
ba = bytearray([116, 117, 118]) # bytearray(b'tuv')
ba = bytearray('tuv', 'utf-8') # bytearray(b'tuv')
# bytearrayは要素を変更できる
ba[0] = 115 # bytearray(b'suv')
bytes
とbytearray
オブジェクトは+
演算子を使用して連結することができます。連結結果は最初の引数の型を取ります。つまり、a+b
はbytes
オブジェクトを、b+a
はbytearray
を生成します。
a = bytes(3) # b'\x00\x00\x00'
b = bytearray(4) # bytearray(b'\x00\x00\x00\x00')
c = a + b # b'\x00\x00\x00\x00\x00\x00\x00'
d = b + a # bytearray(b'\x00\x00\x00\x00\x00\x00\x00')
bytes
とbytearray
オブジェクトは、decode
関数を使用して文字列に変換することができます。
以上がPythonのbytes
とbytearray
についての基本的な説明です。これらのデータ型を理解し、適切に使用することで、Pythonプログラミングの幅が広がります。