Python

【Python】structモジュールの使い方

この記事では、Pythonのstructモジュールの使い方について解説します。structといえば構造体を思い浮かべるかもしれませんが、Pythonではバイナリデータを扱うモジュールです。ただし、無関係というわけではなく、C言語の構造体データなどを変換するために使われるモジュールです。

structモジュールの使い方

structモジュールは、データをパックしたりアンパックするのに使われます。

インポート

structモジュールは、標準ライブラリなのでimportするだけで使えます。

from struct import *

パック

pack関数でフォーマットを指定し、値をbytes型に変換することができます。

データはカンマ区切りで複数指定することができます。

pack(format, v1, v2,...)
パックとは?

データをフォーマットを指定してバイナリ形式に変換すること

アンパック

unpack関数でバイナリデータを復元することができます。

unpack(format, buffer)
アンパックとは?

バイナリデータから元のデータに復元すること

フォーマット文字

フォーマット文字には以下のようなものがあります。

フォーマット C言語の型 Pythonの型 標準のサイズ
c char 長さ1のバイト列 1
? _Bool bool型 1
h short 整数 2

フォーマット文字は他にもたくさん用意されています。

Link書式指定文字 – struct — バイト列をパックされたバイナリデータとして解釈する — Python 3.9.1 ドキュメント

サンプル

試しに適当なデータをパック・アンパックしてみます。

from struct import *

# パック
pack_data = pack('ch?', b'a', 1, True)
print(f'パックしたデータ: {pack_data}')

# アンパック
unpack_data = unpack('ch?', pack_data)
print(f'アンパックしたデータ: {unpack_data}')

実行結果

パックしたデータ: b'a\x00\x01\x00\x01'
アンパックしたデータ: (b'a', 1, True)

まとめ

この記事ではstructモジュールの使い方を簡単に解説しました。

structモジュールを使うことで、バイナリデータを簡単にパック・アンパックできるので便利でした。

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』