Python,' int'不支持缓冲区接口

时间:2015-06-15 22:34:08

标签: python

data=0x00000
offset=0
bmp=open('victim.bmp','wb')
bmpheader=0 #will be filled later
for x in range(1,16777216): 
    bmp.seek(offset)    
    bmp.write(data)
    data=data+0x00001
    offset=offset+1

这是一个来源,我尝试制作一个程序,它将填充一个带有十六进制值的bmp文件,如00 00 00,00 00 01等16 777 216次。错误在第10行(bmp.write)。

1 个答案:

答案 0 :(得分:0)

添加import struct,然后用

替换坏行
bmp.write(struct.pack('>I', data)[1:])

[1:]是因为没有办法使用struct.pack来创建一个3字节的项,所以它会创建一个(big-endian)4字节项并切断第一个字节。< / p>

此外,您的range只有一个,而您的offset逻辑完全是假的,应该删除。