Python

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

この記事では、Pythonのstructモジュールの使い方について解説します。

structといえば構造体を思い浮かべるかもしれませんが、
Pythonではバイナリデータを扱うモジュールです。

ただし、無関係というわけではなく、
C言語の構造体データなどを変換するために使われます。

それでは、structモジュールの使い方を見ていきましょう!

structモジュールの使い方

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

インポート

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

from struct import *

パック

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

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

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

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

アンパック

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

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

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

フォーマット文字

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

フォーマットC言語の型Pythonの型標準のサイズ
cchar長さ1のバイト列1
?_Boolbool型1
hshort整数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モジュールは、バイナリデータを簡単にパック・アンパックできるので便利です。

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

Linkstruct — バイト列をパックされたバイナリデータとして解釈する — Python 3.9.1 ドキュメント

【おすすめ】Python参考書

一冊目におすすめ

created by Rinker

プログラミング初心者の方向き。とても優しい内容になっています。

二冊目におすすめ

created by Rinker

他言語を学んだことある方や中級者にスキルアップを目指している方向けです。

ゲーム開発に興味があるなら

created by Rinker

本書では基礎を学びながらゲームを作っている雰囲気を味わうことできます。