“Python中二进制文件的读取”的版本间差异
跳到导航
跳到搜索
无编辑摘要 |
无编辑摘要 |
||
(未显示同一用户的1个中间版本) | |||
第8行: | 第8行: | ||
str=a.hex() #这里是把两个16进制位直接输出为字符串 |
str=a.hex() #这里是把两个16进制位直接输出为字符串 |
||
num=struct.unpack('B',a)[0] #这是把一个byte装换为其二进制的原始数,但是是以10进制的形式出现 |
num=struct.unpack('B',a)[0] #这是把一个byte装换为其二进制的原始数,但是是以10进制的形式出现 |
||
*struct.unpack的用法比较丰富 |
*struct.unpack的用法比较丰富,[https://cloud.tencent.com/developer/article/1406350] |
||
:*可以将不同的字节装换为不同的格式 |
:*可以将不同的字节装换为不同的格式 |
||
:*多字节数注意高低位[[大小端]]的区别 |
:*多字节数要注意高低位[[大小端]]的区别,以及原码,补码,反码的概念[https://www.jianshu.com/p/a9613643738b] |
||
:* 字节码 转 数字 |
:* 字节码 转 数字 |
||
>>> struct.unpack('B', b'\xff') (255,) # 单字节 |
>>> struct.unpack('B', b'\xff') (255,) # 单字节 |
2021年11月21日 (日) 14:30的最新版本
- 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的用法比较丰富,[1]
>>> 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进制)