gpt4 book ai didi

Python3按一定数据位数格式处理bin文件的方法

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python3按一定数据位数格式处理bin文件的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

因为研究生阶段经常用matlab作图,处理数据,但是matlab太过于庞大,不方便,就想用python处理.

问题:我们通常处理的最原始的数据是bin文件,打开后如下所示,是按16进制形式存储的.

Python3按一定数据位数格式处理bin文件的方法

matlab处理时,是按照如下方式读取前10个数,int32数据格式,上图中的红色圈表示matlab读取的一个数据,前10个数据表示元数据.

Python3按一定数据位数格式处理bin文件的方法

matlab读取的前10个数据的结果:

Python3按一定数据位数格式处理bin文件的方法

而python中似乎没有可以在指定数据格式位数下读取bin文件中数据,例如想以python中的read()读取时,图一中的蓝线所圈的表示一个数据,图中圈了两个数据。用以下程序读取matlab所读取的10各数据,则需要读40个.

Python3按一定数据位数格式处理bin文件的方法

结果如下:也是16进制 。

Python3按一定数据位数格式处理bin文件的方法

每隔三个数据对应时matlab读取的数据.

想到用struct包里面的unpack函数解决问题,可以可惜的时python中unpack不支持float32,也不支持int32,所以上面在用python读取数据时,不能以32位读取,最多以8位读,从而python挨个读取时一个蓝线圈里的数据.

# 按照给定的格式(fmt)解析字节流string,返回解析出来的tuple 。

unpack(fmt, string) 。

string类似于:\x00\x00\x00\x0c\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00]\x00\x00\x00\x0c\x00\x00\x00\x08\x00\x00\x00\t\x00\x00 。

format c type python type standard size notes
x pad byte no value    
c char string of length 1 1  
b signed char integer 1 (3)
b unsigned char integer 1 (3)
? _bool bool 1 (1)
h short integer 2 (3)
h unsigned short integer 2 (3)
i int integer 4 (3)
i unsigned int integer 4 (3)
l long integer 4 (3)
l unsigned long integer 4 (3)
q long long integer 8 (2), (3)
q unsigned long long integer 8 (2), (3)
f float float 4 (4)
d double float 8 (4)
s char[] string    
p char[] string    
p void * integer  

(5), (3) 。

个人觉得python这方面做的没有matlab好, 。

所以python不能以类似于matlab中fread(f,n,int32)或者fread(f,n,real*4)的方式读取上图中的字符流,也无法解析.

以上这篇python3按一定数据位数格式处理bin文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/qq_25948717/article/details/80341390 。

最后此篇关于Python3按一定数据位数格式处理bin文件的方法的文章就讲到这里了,如果你想了解更多关于Python3按一定数据位数格式处理bin文件的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com