この記事では、Pythonのstructモジュールの使い方について解説します。
struct
といえば構造体を思い浮かべるかもしれませんが、Pythonではバイナリデータを扱うモジュールです。ただし、無関係というわけではなく、C言語の構造体データなどを変換するために使われるモジュールです。
それでは、使い方を見ていきましょう!
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
モジュールを使うことでバイナリデータを簡単にパック・アンパックできるので便利でした。
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ
View Comments