天天看点

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的方式解析数据。
           

推荐用第二种,效率高。符号‘>’,表示大端数据。