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

时间:2012-08-26 23:44:43

标签: python struct

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

pack('bblll', 66, 77, fileLength, 0, 122)

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

b = char(1个字节) l =长(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

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

1 个答案:

答案 0 :(得分:5)

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

More info on this documentation page.