2014-09-04 44 views
1

我有一個文件,其中包含來自小程序的十六進制表示形式的代碼,並且試圖將其實際轉換爲程序本身。BASh - 將十六進制值列表轉換爲二進制文件(應用程序)

例如,這裏是這樣的文本的樣本,儲存在一個文件中,input.txt

8d 
00 
a1 
21 
53 
57 
43 
48 
0e 
00 
bb 

我使用下面的BASH片斷將文件轉換爲二進制文件:

rm outfile; while read h; do echo -n ${h}; echo -ne \\x${h} >> outfile; done < input.txt 

¡!SWCH» 

然後將其轉換爲H:

打開輸出文件中VIM後通過xxd恩表示:

0000000: 8d00 a121 5357 4348 0e00 bb0a   ...!SWCH.... 

這一切都不錯,除了一兩件事:有一個尾隨字節,0a,在我的二進制輸出文件的末尾尾隨。這發生在我使用的每個程序文件中。尾部0a如何附加到每個輸出二進制文件?它不在我的輸入文件中。

謝謝。

回答

2

簡單地說,從一個bash直接使用XXD像

xxd outfile > outfile.hex 

,你會看到,這裏沒有任何0a

當vim發送一行到xxd命令時,0a被追加到某處。如果你想Vim內部轉換 - 嘗試使用

vim -b outfile 

什麼以二進制方式打開outfile

相關問題