为什么我只向这个文件写入 28,672 位?

Why am I only writing 28,672 bits to this file?

我一直在做一个项目,需要将某种二进制文件编程到 AT28C256 芯片。除了文件大小需要 32,768 字节(准确)之外,具体细节并不重要。

我这里有一些 "minimal problem" 代码:

o = open("images.bin", "wb")
c = 0
for i in range(256):
    for j in range(128):
        c += 1
        o.write(chr(0).encode('utf-8'))
print(c)

这对我来说似乎是将 32,768 字节写入文件(拆分为 i,j 是必要的,因为我需要将图像写入设备)为 128*256 = 32768。输出为c是32768!

但是它创建的文件是 28672 字节长!这是十六进制的 7000 这一事实并没有让我忽略,但我不确定为什么会这样。有什么想法吗?

您应该调用 o.close() 来刷新写入缓冲区并正确关闭文件。