この記事では、Pythonのstructモジュールの使い方について解説します。
structといえば構造体を思い浮かべるかもしれませんが、Pythonではバイナリデータを扱うモジュールです。ただし、無関係というわけではなく、C言語の構造体データなどを変換するために使われるモジュールです。
それでは、使い方を見ていきましょう!
もくじ
スポンサーリンク
structモジュールの使い方
structモジュールは、データをパックしたりアンパックするのに使われます。
インポート
structモジュールは、標準ライブラリなのでインポートするだけで使えます。
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 ドキュメント
サンプル
試しに適当なデータをパック・アンパックしてみます。
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モジュールを使うことでバイナリデータを簡単にパック・アンパックできるので便利でした。
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ
- struct --- バイト列をパックされたバイナリデータとして解釈する — Python 3.9.1 ドキュメント


