[英]Why does my Python read more bits than I have set?
我正在尝试从二进制文件中读取值,但遇到了一些麻烦。 这就是我正在做的:
from struct import unpack
with open("pixelValues.txt", "rb") as f:
byte = f.read(8)
foo = unpack("<Q", byte)
print(foo)
当我运行程序时,输出是(4244912790557L,)
这对我来说没有意义,因为它应该是1485102109
。 有没有人看到我做错了什么?
这是文件的屏幕截图:
你读得太多了。 将f.read(8)
更改为f.read(4)
并将unpack("<Q", byte)
更改为unpack("i", byte)
,这将解决您的问题。
pack('<Q', 1485102109)
返回:
'\x1d\xdc\x84X\x00\x00\x00\x00'
这与您的文件不一致。 你是怎么写的?
编辑:
您已使用 %d 说明符编写了数字,这意味着您已将其编写为 4 字节整数,而不是 unsigned long long,而是 unsigned int。 你应该这样读:
from struct import unpack
with open("pixelValues.txt", "rb") as f:
num = f.read(4)
foo = unpack("<I", num)
print(foo)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.