バイナリ書き込み

struct.packの仕様について。
デフォルトがアライメント付きという罠仕様だった。
アライメントを回避するにはフォーマットの先頭に'='を入れる。

import struct

s=struct.Struct("BI")
print s.size # 8

s_no_alignment=struct.Struct("=BI")
print s_no_alignment.size # 5

# struct.packのフォーマット指定も同様。

http://pythonjp.sourceforge.jp/dev/library/struct.html