Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

pack_into / unpack_fromメソッドをつかってC言語風にデータを格納する

structのpack_into/unpack_fromメソッドをつかうと、C言語のような感じでメモリ領域を確保、読み出しが可能です。
何らかの事情で保存領域の使用がタイトだったりとか、C言語で実装されたプロジェクトをPythonで書き換えたりするときに使えますね。

実際のところ

メモリ確保にはctypesを使いますが、arrayもいけるらしいです。

import struct
import ctypes

style = 'hhl'
size = struct.calcsize(style)

# 保存するデータ枠の指定
buff = ctypes.create_string_buffer(size)

# buffにつめる
struct.pack_into(style, buff, 0, *(5, 10, 2))

# buffのなかみを呼び出す
struct.unpack_from(style, buff, 0)
#>> (5, 10, 2)