python 讀取24 位有符號整型資料
兩種辦法
一、補充成4位元組,安int方法解析
import struct
fp=open(filename,'rb') #開啟檔案
chunk=fp.read(3*N) #讀取N個數據,佔用3*N個位元組
bytess=chunk[i*3:i*3+3] #讀取第i個數據
bytess2=bytess+b'\x00' #在末尾補充一個空位元組
value=struct.unpack('>i',bytess2)[0]/256 #按照int的方式讀取資料,256是因為資料左移了8位,要變回來。
注意,本次的資料是big endian(大端)資料,因此,是在末尾補充空位元組。如果是little endian
則應在開頭補充。
二、呼叫rawulib 庫解析
rawilib中有int24,用u表示.
import rawutil
fp=open(filename,'rb') #開啟檔案
chunk=fp.read(3*N) #讀取N個數據,佔用3*N個位元組
bytess=chunk[i*3:i*3+3] #讀取第i個數據
value=rawutil.unpack('>1u',bytess)[0] #按照int24的方式解析資料。
推薦用第二種,效率高。符號‘>’,表示大端資料。