我正在使用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个额外位为空。他们来自哪里?我如何摆脱他们?它破坏了我的形象。
答案 0 :(得分:5)
它填充到四字节(字)边界,因此long
s从自然偏移开始(即偏移是四的倍数),使用=
前缀(或任何其他的可能的字节顺序前缀)来防止这种情况。