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