# coding: utf-8
import struct

# pack的第一個參數是處理指令，'>I'的意思是：
# >表示字節順序是big-endian，也就是網絡序，I表示4字節無符號整數。
print struct.pack('>I', 10240099)
# 根據>IH的說明，後面的str依次變為I：4字節無符號整數和H：2字節無符號整數。
# 所以，儘管Python不適合編寫底層操作字節流的代碼，
# 但在對性能要求不高的地方，利用struct就方便多了。
print struct.unpack('>IH', '\xf0\xf0\xf0\xf0\x80\x80')

# I：4字節無符號整數
# H：2字節無符號整數
# 對性能要求不高的地方，利用struct就方便多了

s = '\x42\x4d\x38\x8c\x0a\x00\x00\x00\x00\x00\x36\x00\x00\x00\x28\x00\x00\x00\x80\x02\x00\x00\x68\x01\x00\x00\x01\x00\x18\x00'
# BMP格式採用小端方式存儲數據，文件頭的結構按順序如下：

# 兩個字節：'BM'表示Windows位圖，'BA'表示OS/2位圖；
# 一個4字節整數：表示位圖大小；
# 一個4字節整數：保留位，始終為0；
# 一個4字節整數：實際圖像的偏移量；
# 一個4字節整數：Header的字節數；
# 一個4字節整數：圖像寬度；
# 一個4字節整數：圖像高度；
# 一個2字節整數：始終為1；
# 一個2字節整數：顏色數。
print struct.unpack('<ccIIIIIIHH', s)
# ('B', 'M', 691256, 0, 54, 40, 640, 360, 1, 24)
# 'B'、'M'說明是Windows位圖，位圖大小為640x360，顏色數為24。
