• python 从二进制文件中读取浮点数据


    1. import numpy as np
    2. import struct
    3. def toDoubleList(dataStr):
    4. bytesTotal = len(dataStr)
    5. print("bytesTotal: ", bytesTotal)
    6. # 下面的双斜线是除法结果为整数
    7. segLen = bytesTotal // 8
    8. print("segLen: ", segLen)
    9. # 如果考虑字节序,字节序为big-endian,则以下语句改为 data = struct.unpack('>'+str(bytesTotal/8)+'d',dataStr)
    10. # 相关匹配格式和字节序请见: https://docs.python.org/zh-cn/3/library/struct.html#struct.calcsize
    11. data = struct.unpack(segLen * 'd', dataStr)
    12. return data
    13. #########
    14. def toFloat32List(dataStr):
    15. bytesTotal = len(dataStr)
    16. print("bytesTotal: ", bytesTotal)
    17. # 下面的双斜线是除法结果为整数
    18. segLen = bytesTotal // 4
    19. print("segLen: ", segLen)
    20. # 如果考虑字节序,字节序为big-endian,则以下语句改为 data = struct.unpack('>'+str(bytesTotal/4)+'f',dataStr)
    21. data = struct.unpack(segLen * 'f', dataStr)
    22. return data
    23. def toUint16List(dataStr):
    24. bytesTotal = len(dataStr)
    25. print("bytesTotal: ", bytesTotal)
    26. # 下面的双斜线是除法结果为整数
    27. segLen = bytesTotal // 2
    28. print("segLen: ", segLen)
    29. # 如果考虑字节序,字节序为big-endian,则以下语句改为 data = struct.unpack('>'+str(bytesTotal/2)+'H',dataStr)
    30. data = struct.unpack(segLen * 'H', dataStr)
    31. return data
    32. def toUint32List(dataStr):
    33. bytesTotal = len(dataStr)
    34. print("bytesTotal: ", bytesTotal)
    35. # 下面的双斜线是除法结果为整数
    36. segLen = bytesTotal // 4
    37. print("segLen: ", segLen)
    38. # 如果考虑字节序,字节序为big-endian,则以下语句改为 data = struct.unpack('>'+str(bytesTotal/4)+'I',dataStr)
    39. data = struct.unpack(segLen * 'I', dataStr)
    40. return data
    41. def toUintLongLongList(dataStr):
    42. bytesTotal = len(dataStr)
    43. print("bytesTotal: ", bytesTotal)
    44. # 下面的双斜线是除法结果为整数
    45. segLen = bytesTotal // 8
    46. print("segLen: ", segLen)
    47. # 如果考虑字节序,字节序为big-endian,则以下语句改为 data = struct.unpack('>'+str(bytesTotal/8)+'Q',dataStr)
    48. data = struct.unpack(segLen * 'Q', dataStr)
    49. return data
    50. #### 测试代码
    51. file_bin = "path/to/binfile"
    52. with open(file_bin, 'rb') as f_r:
    53. dataStr = f_r.read()
    54. data_vs = toFloat32List(dataStr)

    struct --- 将字节串解读为打包的二进制数据 — Python 3.12.0 文档

  • 相关阅读:
    聚鑫数藏平台——引领数字资产管理新风向
    如何通过卖虚拟资料月入10万?看这几个卖资料案例
    UE4 蓝图宏库以及字母前缀说明
    TypeScript手写+项目实际
    执行Django 的迁移命令报错[1193, Unknown system variable default_storage_engine]
    zmq封装
    图观 | 快速评估图数据库何时适合使用?
    Aviation turbofan starting model
    2022-iOS个人开发者账号申请流程
    【气泵方案】SUP桨板冲浪板打气泵芯片方案
  • 原文地址:https://blog.csdn.net/ytusdc/article/details/133749167