Hi Folks
我一直在研究一个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值对应于字节流中的无符号短路。祝,TIA,欢呼!
答案 0 :(得分:1)
如前所述,在不知道二进制协议的情况下,很难猜测正在使用的确切编码。可能存在特定情况逻辑在给定数据中不明显。
了解第三方应用程序的名称或至少与其相关的字段将是有用的。任何有关编码可能是什么的想法。
以下是您要求如何处理的线索:
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 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 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 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 27 00 00 00 ....或 27 00 00 00
...你猜是使用了两个字节,所以其他字节可能是单独的0值字段。
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 27 00 00 00
等等......只需将一些十进制数转换为十六进制并搜索数据中的可能位置。考虑字段可能是大字节或小字节或其组合。
你应该看一下 struct python库,一旦你知道正在使用的格式,这对于处理这样的转换很有用。
通过更多数据示例,可以测试上述理论。
答案 1 :(得分:0)
从二进制文件到有意义的字符串,我们必须知道二进制代码协议我们无法凭空解决二进制文件。
答案 2 :(得分:0)
看看我的Python脚本,它将二进制文件转换为CSV或BSV文件,给定C头文件和定义该二进制记录的C结构名称。 https://github.com/SShabtai/MsgGini。 虽然不完整,但它可能会给你一些提示......