pythonのstructモジュールの使い方
PythonのstructモジュールはC構造体のパックとアンパックの操作を行うものです。 バイナリデータとPythonの文字列間の変換を行うための関数がいくつか提供されています。
よく使われる struct モジュールの関数の使用方法を以下に示します。
- 指定された形式でデータをパッキングします。形式は形式文字列で、各値の型と順番を指定するために使用されます。パッキングされる値が v1, v2, … です。
import struct
# 将整数和浮点数打包为二进制数据
data = struct.pack('i f', 10, 3.14)
print(data) # b'\n\x00\x00\x00\x0b\x86\x1f@'
- format に従って、バイナリデータをアンパックします。 formatは各値の型と順序を指定するためのフォーマット文字列で、buffer はアンパックするバイナリデータです。
import struct
# 从二进制数据中解包整数和浮点数
data = b'\n\x00\x00\x00\x0b\x86\x1f@'
values = struct.unpack('i f', data)
print(values) # (10, 3.140000104904175)
- 指定したフォーマットの構造体のサイズをバイト単位で計算します。
import struct
# 计算结构体的大小
size = struct.calcsize('i f')
print(size) # 8
- 指定したフォーマットのバイナリデータをイテレータに戻します。イテレータはイテレーション時にアンパックされたタプルを返します。
import struct
# 迭代解包二进制数据
data = b'\n\x00\x00\x00\x0b\x86\x1f@\n\x00\x00\x00\x16\xc0\xb0@'
for values in struct.iter_unpack('i f', data):
print(values) # (10, 3.140000104904175), (22, 22.5)
公式サイトドキュメントを参照すれば、より詳しい使用方法や書式文字列のルールを把握することができます。この章では、structモジュールでよく利用される関数の使い方をざっと紹介するにとどめています。