簡體   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