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

 更新时间:2019年01月24日 10:18:40   作者:大鱼-瓶邪  
今天小编就为大家分享一篇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文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python 函数返回值的示例代码

    Python 函数返回值的示例代码

    这篇文章主要介绍了Python 函数返回值的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • django创建超级用户时指定添加其它字段方式

    django创建超级用户时指定添加其它字段方式

    这篇文章主要介绍了django创建超级用户时指定添加其它字段方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python运用于数据分析的简单教程

    Python运用于数据分析的简单教程

    这篇文章主要介绍了Python运用于数据分析的简单教程,主要介绍了如何运用Python来进行数据导入、变化、统计和假设检验等基本的数据分析,需要的朋友可以参考下
    2015-03-03
  • Python Socket使用实例

    Python Socket使用实例

    这篇文章主要介绍了Python Socket使用实例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 使用python实现抓取腾讯视频所有电影的爬虫

    使用python实现抓取腾讯视频所有电影的爬虫

    这篇文章主要介绍了使用python实现抓取腾讯视频所有电影的爬虫,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • pytorch中的inference使用实例

    pytorch中的inference使用实例

    今天小编就为大家分享一篇pytorch中的inference使用实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 详解Python操作Excel之openpyxl

    详解Python操作Excel之openpyxl

    这篇文章主要为大家介绍了Python操作Excel的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • python中字符串数组逆序排列方法总结

    python中字符串数组逆序排列方法总结

    在本篇文章里小编给大家整理了关于python中字符串数组如何逆序排列的相关知识点,需要的朋友们学习下。
    2019-06-06
  • python Zmail模块简介与使用示例

    python Zmail模块简介与使用示例

    这篇文章主要介绍了python Zmail模块简介与使用示例,帮助大家利用python收发邮件,感兴趣的朋友可以了解下
    2020-12-12
  • Python利用LyScript插件实现批量打开关闭进程

    Python利用LyScript插件实现批量打开关闭进程

    LyScript是一款x64dbg主动化操控插件,经过Python操控X64dbg,完成了远程动态调试,解决了逆向工作者剖析漏洞,寻觅指令片段,原生脚本不行强壮的问题。本文将利用LyScript插件实现批量打开关闭进程,感兴趣的可以了解一下
    2022-07-07

最新评论