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將二進制數據轉化為其他數據時,第一個參數表示處理指令,其中處理的數據大小必須與第二個參數完全相等。