簡體   English   中英

使用Python的人類可讀二進制數據

[英]Human-readable binary data using Python

我的工作需要執行數學仿真,其參數來自二進制文件。 模擬器可以毫無問題地讀取此類二進制文件。

但是,我需要窺視二進制文件以確保參數正是我需要的參數,而且我似乎無法做到這一點。

我想用Python編寫一個腳本,該腳本允許我讀取二進制文件,搜索我關心的參數並顯示其值。

我對二進制文件了解的內容:

它代表簡單的文本(而不是圖像或soud文件)。 有一段代碼可以將文件“轉儲”為可讀格式:如果我在Emacs中打開該轉儲,則會發現類似以下內容:

CENTRAL_BODY = 'SUN'

所有文件只是一系列類似的說明。 我可以使用該轉儲代碼,但我寧願讓Python那樣做。

這似乎是一個非常瑣碎的問題,對於您不了解該問題深表歉意。 我以為我是一個熟練的程序員!

非常感謝。

您可以將文件的內容讀入內存中的字符串中:

thedata = open(thefilename, 'rb').read()

然后在其中找到一個字符串:

where = thedata.find('CENTRAL_BODY')

最后切下您關心的部分:

thepart = thedata[where:where+50]  # or whatever length

和你喜歡顯示它(如找到內定位字符串值thepart=標志,那么第一個下面引用,那么接下來的后引號)。

聽起來這個“轉儲”程序已經完成了您需要的工作:解釋二進制文件。 我想我的方法是編寫一個可以獲取轉儲文件,提取所需參數並顯示它們的python程序。

然后用類似下面的內容解析它:

myparms.py:

import sys

d = {}
for line in sys.stdin:
    parts = line.split("=",2)
    if len(parts) < 2:
        continue
    k = parts[0].strip()
    v = parts[1].strip()
    d[k] = v

print d['CENTRAL_BODY']

像這樣使用:

轉儲parameters.bin | python myparms.py

您沒有提到平台,也沒有提供有關轉儲格式的詳細信息,但這應該是一個起點。

如果它是二進制文件,則需要使用struct模塊。 您將需要知道文件中數據的格式。 如果沒有記錄,則必須對其進行反向工程。

您是否有其他轉儲程序的源代碼? 您也許可以將其移植到Python

如果我們可以看到二進制文件和相應的轉儲是什么樣子,我們可能會更好地幫助您

您必須知道數據存儲的格式; 根本沒有辦法解決。

如果沒有書面說明,請嘗試使用十六進制編輯器將其打開,並使用文本轉儲作為參考來研究格式。 如果您可以獲取用於創建文本轉儲的工具的源代碼,那將對您有很大幫助。

請記住,數據可能會以某種方式進行加密,例如rot13。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM