Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

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)