繁体   English   中英

二进制到CSV记录的会话

[英]Binary to CSV record Converstion

嗨伙计
我一直在研究python模块,该模块会将二进制字符串转换为CSV记录。 通常,第三方应用程序会执行此操作,但是我正在尝试将此逻辑构建到我的代码中。 转换前后的记录如下:

转换后的CSV记录

0029.6,000.87,002.06,0029.2,0010.6,0010.0,0002.1,0002.3,00120,00168,00054,00111,00130,00000,00034,00000,00000,00039,00000,0313.1,11:09:01,06-06-2015,00000169

我正在尝试找出第三方工具已使用的转换逻辑,如果有人可以帮助我提供一些有关此方面的线索,那就太好了!
我分析过的一件事是,每个CSV值对应于字节流中的无符号short。
TIA,加油!

如上所述,在不知道二进制协议的情况下,很难猜测正在使用的确切编码。 在给定数据中可能存在不明显的特殊情况逻辑。

知道第三方应用程序的名称或至少与之相关的字段会很有用。 关于编码可能是什么的任何想法。

以下是您要求的有关如何进行的线索:

  1. CSV的结尾显示一个日期,可以在开始时看到它

31 08 11 06 06 15 20 AA A8 00 00 00 28 01 57 00 CE 00 24 01 6A 00 64 00 15 00 17 00 78 00 A8 00 36 00 6F 00 82 00 00 00 22 00 00 00 00 00 00 27 00 00 00

  1. 最终值169(十六进制A9)可疑地位于接下来的两个十六进制值之间

31 08 11 06 06 15 20 AA A8 00 00 00 28 01 57 00 CE 00 24 01 6A 00 64 00 15 00 17 00 78 00 A8 00 36 00 6F 00 82 00 00 00 22 00 00 00 00 00 00 27 00 00 00

  1. “ 00039”可以指末4位数字

31 08 11 06 06 15 20 AA A8 00 00 00 28 01 57 00 CE 00 24 01 6A 00 64 00 15 00 17 00 78 00 A8 00 36 00 6F 00 82 00 00 00 22 00 00 00 00 00 00 27 00 00 00

要么:

31 08 11 06 06 15 20 AA A8 00 00 00 28 01 57 00 CE 00 24 01 6A 00 64 00 15 00 17 00 78 00 A8 00 36 00 6F 00 82 00 00 00 22 00 00 00 00 00 00 27 00 00 00 ....或27 00 00 00

...您猜测使用了两个字节,所以也许其他字节是单独的0值字段。

  1. “ 00034”可以表示:

31 08 11 06 06 15 20 AA A8 00 00 00 28 01 57 00 CE 00 24 01 6A 00 64 00 15 00 17 00 78 00 A8 00 36 00 6F 00 82 00 00 00 22 00 00 00 00 00 00 27 00 00 00

依此类推...只需将一些十进制数字转换为十六进制,然后在数据中搜索可能的位置。 考虑字段可能是大字节序或小字节序或其组合。

您应该看看struct python库,一旦知道所使用的格式,该库对于处理此类转换将很有用。

通过更多的数据示例,可以验证上述理论。

从二进制到有意义的字符串,我们必须知道二进制代码协议我们不能凭空解决二进制问题。

看一下我的Python脚本,该脚本将给定C头文件和C结构名称的二进制文件转换为CSV或BSV文件。 https://github.com/SShabtai/MsgGini 虽然不完整,但可能会给您一些提示...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM