繁体   English   中英

为什么我的 Python 读取的位比我设置的多?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM