• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

struct

date: 2021-02-27 excerpt: Cの構造体データの相互変換

tag: structpython


Cの構造体データの相互変換

C言語の構造体データとpythonのデータには互換性がないが、structモジュールを利用すると相互変換できる

公式ドキュメント

  • struct — バイト列をパックされたバイナリデータとして解釈する

例

>>> import struct
>>> struct.pack(">?", 1) # bool
b'\x01'

>>> struct.pack(">i", 1) # int
b'\x00\x00\x00\x01'

>>> struct.pack(">I", 1) # unsigned int
b'\x00\x00\x00\x01'

>>> struct.pack(">L", 1) # long
b'\x00\x00\x00\x01'

>>> struct.pack(">Q", 1) # unsinged long long
b'\x00\x00\x00\x00\x00\x00\x00\x01' 

>>> struct.pack(">q", 1) # long long
b'\x00\x00\x00\x00\x00\x00\x00\x01'

>>> struct.pack(">f", 1) # float
b'?\x80\x00\x00'

>>> struct.pack(">d", 1) # double
b'?\xf0\x00\x00\x00\x00\x00\x00'

ユースケース

TOTPを計算するときなどRFCでC言語の入力が期待されるので、structを用いて変換すると企画に則った処理を行うことができる



structpython Share Tweet