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使用循环实现批量创建文件夹示例
Mar 25 Python
Python中实现的RC4算法
Feb 14 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
Mar 26 Python
浅谈python jieba分词模块的基本用法
Nov 09 Python
python+splinter实现12306网站刷票并自动购票流程
Sep 25 Python
使用TensorFlow实现简单线性回归模型
Jul 19 Python
Python 画出来六维图
Jul 26 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
python运用pygame库实现双人弹球小游戏
Nov 25 Python
python生成任意频率正弦波方式
Feb 25 Python
python函数调用,循环,列表复制实例
May 03 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 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自动加载的两种实现方法
2010/06/21 PHP
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
jquery实现动态菜单的实例代码
2013/11/28 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
Python递归实现打印多重列表代码
2020/02/27 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
html如何对span设置宽度
2019/10/30 HTML / CSS
中等生评语大全
2014/05/04 职场文书
运动会方阵口号
2014/06/07 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
拖欠货款起诉状
2015/05/20 职场文书
redis cluster支持pipeline的实现思路
2021/06/23 Redis
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers
Win11筛选键导致键盘失灵怎么解决? Win11关闭筛选键的技巧
2022/04/08 数码科技