Python転職初心者向けエンジニアリングブログ

Pythonに魅了されたあなたへ。エンジニアリングの扉を開く転職初心者向けのブログへようこそ。このブログでは、Pythonの奥深さに迫りながら、エンジニアリングへの転職に役立つ情報を提供しています。未経験者から始めるPythonエンジニアリングの世界への一歩を踏み出すためのガイダンス、ベストプラクティス、そして成功事例など、初心者の方でもわかりやすいコンテンツをお届けします。

Pythonの`bytes()`と`bytearray()`: バイナリデータの魔法

LYPプレミアム会員 python

Pythonのbytes()bytearray(): バイナリデータの魔法

Pythonにおけるbytesbytearrayは、バイナリデータを扱うための強力なデータ型です。この記事では、それぞれの基本的な使い方から、データの変換、操作、そして実用的な応用例までをコード例を交えて詳しく解説します。

1. bytesとは

bytesはイミュータブル(変更不可)なバイナリデータを扱うためのデータ型です。通常、ASCII文字やUTF-8エンコーディングなどで表現できるデータを格納します。

1.1. bytesの作成

bytesオブジェクトは、以下のようにして作成します。

# ASCII文字列からbytesを作成
ascii_bytes = b"Hello, World!"

# 16進数からbytesを作成
hex_bytes = bytes.fromhex("48656c6c6f2c20576f726c64")

# バイト列からbytesを作成
byte_list = [72, 101, 108, 108, 111]
byte_array = bytes(byte_list)

1.2. bytesの操作

bytesはイミュータブルなため、要素の変更はできませんが、スライスや検索、長さの取得などの操作が可能です。

# スライス
sub_bytes = ascii_bytes[7:12]

# 検索
index = ascii_bytes.index(b"Wor")

# 長さの取得
length = len(ascii_bytes)

2. bytearrayとは

bytearraybytesと同様のバイナリデータを扱うデータ型ですが、bytesとは異なりミュータブル(変更可能)です。これにより、データの変更が可能となります。

2.1. bytearrayの作成

bytearrayオブジェクトは、以下のようにして作成します。

# ASCII文字列からbytearrayを作成
ascii_bytearray = bytearray(b"Hello, World!")

# 16進数からbytearrayを作成
hex_bytearray = bytearray.fromhex("48656c6c6f2c20576f726c64")

# バイト列からbytearrayを作成
byte_list = [72, 101, 108, 108, 111]
bytearray_from_list = bytearray(byte_list)

2.2. bytearrayの操作

bytearrayはミュータブルなため、要素の変更ができます。また、bytesと同様にスライスや検索、長さの取得も可能です。

# 要素の変更
ascii_bytearray[7:12] = b"Univ!"

# スライス
sub_bytearray = ascii_bytearray[7:12]

# 検索
index = ascii_bytearray.index(b"Univ!")

# 長さの取得
length = len(ascii_bytearray)

3. 応用例: ファイルの読み書き

bytesbytearrayはファイルの読み書きにも役立ちます。以下は、バイナリファイルの読み書きの例です。

# バイナリファイルの書き込み
with open("binary_data.bin", "wb") as file:
    data_to_write = bytearray(b"This is binary data.")
    file.write(data_to_write)

# バイナリファイルの読み込み
with open("binary_data.bin", "rb") as file:
    read_data = bytearray(file.read())
    print(read_data)

4. まとめ

bytesbytearrayはバイナリデータの扱いに特化したデータ型であり、様々な場面で利用されています。基本的な使い方から実用的な応用例までを理解し、これらのデータ型を上手に活用して効率的なプログラミングを行いましょう。