我正在尝试从二进制文件中读取值,但我遇到了一些麻烦。这就是我正在做的事情:
from struct import unpack
with open("pixelValues.txt", "rb") as f:
byte = f.read(8)
foo = unpack("<Q", byte)
print(foo)
当我运行程序时,输出为(4244912790557L,)
,这对我来说没有意义,因为它应该是1485102109
。有谁看到我做错了什么?
以下是该文件的屏幕截图:
答案 0 :(得分:2)
你读的太多了。将f.read(8)
更改为f.read(4)
并将unpack("<Q", byte)
更改为unpack("i", byte)
,这样可以解决您的问题。
答案 1 :(得分:0)
pack('<Q', 1485102109)
返回:
'\x1d\xdc\x84X\x00\x00\x00\x00'
哪个与您的文件不一致。 你是怎么写的?
编辑:
您已使用%d说明符编写了数字,这意味着您已将其写为4字节整数,而不是无符号长整数,而是作为无符号整数。 你应该这样读:
from struct import unpack
with open("pixelValues.txt", "rb") as f:
num = f.read(4)
foo = unpack("<I", num)
print(foo)