python结构,不需要的额外字节

Jac*_*nta 2 python struct

我正在使用python编写一个位图文件.我创建位图头的代码是:

pack('bblll', 66, 77, fileLength, 0, 122)
Run Code Online (Sandbox Code Playgroud)

除非我的数学错误,(其中,不是),这应该创建一个14字节长的字节串.

b = char(1字节)l = long(4字节)

1 + 1 + 4 + 4 + 4 = 14

但是,问题是,我收到2个额外的字节; 假设我的文件长度为142,我将收到以下内容(以十六进制表示):

42 4D 00 00 8E 00 00 00 00 00 00 00 7A 00 00 00
Run Code Online (Sandbox Code Playgroud)

2个额外位在偏移量0x2和0x3处为空.他们来自哪里?我如何摆脱他们?它破坏了我的形象.

Ale*_*ler 5

它填充到四字节(字)边界,因此longs从自然偏移开始(即,偏移是四的倍数),使用=前缀(或任何其他可能的字节顺序前缀)来防止这种情况.

有关此文档页面的更多信息.