簡體   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