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


Posted in Python onJanuary 24, 2019

因为研究生阶段经常用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文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
May 04 Python
深入了解Python在HDA中的应用
Sep 05 Python
分享一个pycharm专业版安装的永久使用方法
Sep 24 Python
python的sys.path模块路径添加方式
Mar 09 Python
Python reversed函数及使用方法解析
Mar 17 Python
执行Python程序时模块报错问题
Mar 26 Python
解决reload(sys)后print失效的问题
Apr 25 Python
Python调用jar包方法实现过程解析
Aug 11 Python
python通配符之glob模块的使用详解
Apr 24 Python
python 实现图与图之间的间距调整subplots_adjust
May 21 Python
Python使用post及get方式提交数据的实例
Jan 24 #Python
在python中利用opencv简单做图片比对的方法
Jan 24 #Python
正确理解Python中if __name__ == '__main__'
Jan 24 #Python
对python读取CT医学图像的实例详解
Jan 24 #Python
python 读取dicom文件,生成info.txt和raw文件的方法
Jan 24 #Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
Jan 24 #Python
python Selenium实现付费音乐批量下载的实现方法
Jan 24 #Python
You might like
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python统计一个文本中重复行数的方法
2014/11/19 Python
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
python中kmeans聚类实现代码
2018/02/23 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
大学生水文观测实习自我鉴定
2013/09/29 职场文书
公务员的自我鉴定
2013/10/26 职场文书
酒店营销策划方案
2014/02/07 职场文书
高中打架检讨书
2014/02/13 职场文书
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫