[英]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.