Pythonのbytearray型について現役エンジニアが解説【初心者向け】

初心者向けにPythonのbytearray型について現役エンジニアが解説しています。データには文字のようなテキストデータと画像に使うようなバイナリデータがあります。bytearray型はバイナリデータで、変更可能なデータを表します。同じバイナリデータのbytes型との違いについても解説します。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

Pythonのbytearray型について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Pythonのbytearray型について詳しく説明していくね!

大石ゆかり

お願いします!

 

バイナリデータとは

あるファイルが存在している場合、それをメモ帳などのエディタで開いた場合、何かしらの文字が表示されて読める場合と、まったく意味不明な文字化けした表示になってしまう場合がありますね。バイナリデータは後者のデータであると言えます。

厳密に言えばアスキー形式(テキスト)もバイナリデータですが、コンピュータの議論をする場合、テキストデータとバイナリデータで分けて考える場合がよくあります。

 

bytes型とbytearray型の違い

どちらも、Byteを扱うデータ型です。違いは前者がmutable(ミュータブル)で後者がimmutable(イミュータブル)です。変更できないオブジェクトのことをイミュータブルと言います。 反対に変更できるオブジェクトのことをミュータブルと言います。

データを書き換えるかそうでないかという事でどちらを使用するか決まります。

 

[PR] Pythonで挫折しない学習方法を動画で公開中

bytearrayメソッドの使い方

>>> x = b'abc'
>>> x[0] = 98
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'bytes' object does not support item assignment
>>>
>>> y = bytearray(b'abc')
>>> y[0] = 98
>>> print(y)
bytearray(b'bbc')

bytearray メソッドは、代入が可能です。

 

実際に書いてみよう

ファイルヘッダなどのバイナリデータをファイルに書き込みたい時や、通信パケットのフォーマットに合わせたデータを作成したい時、有効な方法はいくつかあります。

bytearrayのリストを使ったデータ作成方法を説明します。

>>> x = bytearray([0x01, 0x02, 0x03])
>>> print(x)
bytearray(b’123’)
>>> x.append(0x04)
>>> print(x)
bytearray(b’1234’)

 

まとめ

バイナリデータも変数のように扱えるbytearrayは便利なメソッドです。

監修してくれたメンター

坂下雄一(さかしたゆういち)

外資系のEDAベンダで、エンジニアとして働いた後、東南アジアにて起業しました。
PythonはEDAのコマンド自動化、テスト環境構築の時に初めて使用し、素晴らしいと思い、今に至ります。

EDAの環境構築、手順の自動化は、tcl/tkというコマンド言語がメインですが、Pythonで置き換える作業も最近は盛んになってきています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、Pythonを使った人工知能(AI)や機械学習の基礎を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。