文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python使用numpy按一定格式读取bin文件的实现

2023-05-12 14:17

关注

使用numpy按一定格式读取bin文件

python环境下,如何使用numpy像matlab一样按一定格式读取bin文件?

bin文件就是将数据按16进制形式存储的二进制文件(binary),可以使用WINHEX、Notepad++(需安装插件)等以16进制形式打开,如图用notepad++打开。

由于使用python中的read()读取二进制文件时是以字符串形式读取,且每次只能读取一个字节,十分不方便。

偶然发现可以使用numpy中的fromfile按指定格式对bin文件进行读写,方便了许多。

NumPy提供了多种存取数组内容的文件操作函数。

保存数组数据的文件可以是二进制格式或者文本格式。

二进制格式的文件又分为NumPy专用的格式化二进制类型和无格式类型。

这里重点介绍fromfile

numpy.fromfile(file, dtype=float, count=-1, sep='', offset=0, *, like=None) 
import numpy as np
a = np.arange(24)
b = np.fromfile("F:/a.bin", dtype=np.int32, count=5, offset=8)
print(a, '\n', b)

由上图可以看出,数据是以32位的十六进制数形式存储,也就是一个数占4个字节。(tofile写入数据的顺序为 ‘C’ order)。

此时,若设置count=5, offset=8,也就是从0开始偏移8个字节,读取5个数

结果如图:

image

python读取bin文件并下发串口

# coding:utf-8
import time, serial
from struct import *
import binascii
file = open('E:\\1.bin', 'rb')
i = 0
while 1:
    c = file.read(1)
    # 将字节转换成16进制;
    ssss = str(binascii.b2a_hex(c))[2:-1]
    print(str(binascii.b2a_hex(c))[2:-1])
    if not c:
        break
    ser = serial.Serial('COM3', 57600, timeout=1)
    ser.write(bytes().fromhex(ssss))# 将16进制转换为字节
    if i % 16 == 0:
        time.sleep(0.001)
    #写每一行等待的时间
    i += 1
    ser.close()
file.close()

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯