struct.error: unpack requires a buffer of 26 bytes


with open('Test.bmp', 'rb') as f:
    s = f.read(30)

#利用struct提取信息
struct.unpack('<ccIIIIIHH',s)

#報錯
#struct.error: unpack requires a buffer of 26 bytes

原因是,unpack函數的第一個參數中少寫了一個I(4字節),導致處理的數據大小為26Bytes,而s為30Bytes。

修改為:

struct.unpack('<ccIIIIIIHH',s)
(b'B', b'M', 33510, 0, 54, 40, 109, 102, 1, 24)

總結:struct.unpack將二進制數據轉化為其他數據時,第一個參數表示處理指令,其中處理的數據大小必須與第二個參數完全相等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM