“Python中二进制文件的读取”的版本间差异
跳到导航
跳到搜索
无编辑摘要 |
无编辑摘要 |
||
第10行: | 第10行: | ||
*struct.unpack的用法比较丰富 |
*struct.unpack的用法比较丰富 |
||
:*可以将不同的字节装换为不同的格式 |
:*可以将不同的字节装换为不同的格式 |
||
:*多字节数注意高低位的区 |
:*多字节数注意高低位[[大小端]]的区别 |
||
:* 字节码 转 数字 |
:* 字节码 转 数字 |
2021年11月21日 (日) 14:19的版本
- open一个二进制文件
f=open('IFS_ImageZW/2021-08-18_17-10-52.dat', "rb")
- 读取的时候是以字节为单位的
f.seek(6) #跳过几个字节 byte=f.read(1) #读入一个字节
- 读入后的byte为bytes类型,如何和其它类型相互转化
a=b'\xbb' #可以看到这里把4个二进制位装换为一个16进制的数 str=a.hex() #这里是把两个16进制位直接输出为字符串 num=struct.unpack('B',a)[0] #这是把一个byte装换为其二进制的原始数,但是是以10进制的形式出现
- struct.unpack的用法比较丰富
- 可以将不同的字节装换为不同的格式
- 多字节数注意高低位大小端的区别
- 字节码 转 数字
>>> struct.unpack('B', b'\xff') (255,) # 单字节 >>> struct.unpack('>i', b'\x00\x00\x00\xff') (255,) # 4字节,大端模式 >>> struct.unpack('<i', b'\x00\x00\x00\xff') (-16777216,) # 4字节,小端模式
- 手动 转换字节码 -> 字符串
>>> B = b'\xe9' >>> S = B.hex() >>> S # 值 'e9' >>> int(S,16) # 值 233, 字符串(16进制格式)-> 数字(10进制)