兩種辦法
一、補充成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的方式解析資料。
推薦用第二種,效率高。符號『>』,表示大端資料。 有符號數的符號位擴充套件
char和int型別都是由符號數型別,char型別的變數佔據1個位元組的容量,int型別的變數佔據4個位元組的容量。那麼,把char型別變數賦給int型別變數,會有什麼問題產生?我們會很直觀地認為,把1個位元組大小的資料,放入4個位元組大小的容量,沒有任何問題啊!我們做如下的乙個測試例子 inclu...
24位二進位制解析為有符號整數
include int getdata char buf,int n buf 0 是高位位元組,buf 2 是低位位元組 int main char b 3 result getdata a,3 printf d n result result getdata b,3 printf d n resu...
有符號位和無符號位。 int8疑問有感
學習go語言的資料型別,看見int int8 int16很是疑惑,int8是什麼意思?查詢資料進行綜合解釋大概如下 int8是有符號位8位整形 128到127 隨即產生疑惑,為什麼負數可表示到 128,正數只能127,少一位是為什麼?解答 有符號位的表達形式是最高位是符號位,其餘是數值,正數的表達方...