如何告诉python我的数据结构(二进制)是什么样的,这样我就可以绘制它了?

2024-10-03 06:20:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的数据集。你知道吗

b'\xa3\x95\x80\x80YFMT\x00BBnNZ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Type,Length,Name,Format,Columns\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x95\x80\x81\x17PARMNf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Name,Value\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x95\x80\x82-GPS\x00BIHBcLLeeEefI\x00\x00\x00Status,TimeMS,Week,NSats,HDop,Lat,Lng,RelAlt,Alt,Spd,GCrs,VZ,T\x00\x00\xa3\x95\x80\x83\x1fIMU\x00Iffffff\x00\x00\x00\x00\x00\x00\x00\x00\x00TimeMS,GyrX,GyrY,G

我一直在四处阅读,试图找到如何在python中实现一个代码,使我能够解析这些数据,这样我就可以将一些列相对地绘制出来(大部分是时间)。你知道吗

我发现了一些可能有助于做到这一点的事情:

有一个代码,将允许我把这个数据转换成一个CSV文件。我知道如何使用代码,并将其转换成CSV文件和绘图从那里,但为了学习的经验,我想能够做到这一点,而不转换成CSV文件。现在我试着阅读这些代码,但由于我对python非常陌生,所以我一窍不通。以下是代码链接:

https://github.com/PX4/Firmware/blob/master/Tools/sdlog2/sdlog2_dump.py

另外,有人发帖说这可能是日志格式,但我还是无法理解或运行该页上的任何代码。你知道吗

http://dev.px4.io/advanced-ulog-file-format.html

Tags: 文件csv数据代码nameformatlengthx00
1条回答
网友
1楼 · 发布于 2024-10-03 06:20:27

解析二进制数据的一个好的起点是结构模块https://docs.python.org/3/library/struct.html及其unpack函数。这就是你链接到的CSV转储例程正在做的事情。如果您遍历process方法,它将执行以下操作:

  • 读取二进制数据块
  • 弄清楚它是否有一个有效的头
  • 检查消息类型-如果是格式消息,请解析它。如果是的话 一个描述消息,解析它。你知道吗
  • 转储CSV行

您可以修改此代码,将__printCSVRow方法实质上替换为将数据捕获到数据帧(或其他方便的数据结构)中的方法,以便在完成主例程后,可以从数据帧中获取所有数据并进行打印。你知道吗

相关问题 更多 >