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 相关文章推荐
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
用Python实现通过哈希算法检测图片重复的教程
Apr 02 Python
python使用wmi模块获取windows下硬盘信息的方法
May 15 Python
python中偏函数partial用法实例分析
Jul 08 Python
python实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
通过python顺序修改文件名字的方法
Jul 11 Python
使用python批量修改文件名的方法(视频合并时)
Mar 24 Python
pytorch 获取tensor维度信息示例
Jan 03 Python
python requests包的request()函数中的参数-params和data的区别介绍
May 05 Python
python绘制分布折线图的示例
Sep 24 Python
在Python中字典按值排序的实现方法
Nov 12 Python
Python 的演示平台支持 WSGI 接口的应用
Apr 20 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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
Discuz! Passport 通行证整合
2008/03/27 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
2012/07/07 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
js判断是否是手机页面
2017/03/17 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
es6在react中的应用代码解析
2017/11/08 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
如何理解委托
2012/01/06 面试题
自我检讨报告
2015/01/28 职场文书
蓬莱阁导游词
2015/02/04 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
经销商会议开幕词
2016/03/04 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android