我有一个包含来自小程序的代码的十六进制表示的文件,并且我试图将其实际转换为程序本身。
例如,以下是存储在文件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
在VIM中打开输出文件后:
¡!SWCH»
然后通过xxd
将其转换为十六进制表示:
0000000: 8d00 a121 5357 4348 0e00 bb0a ...!SWCH....
这一切都很好,除了一件事:在我的二进制输出文件的末尾有一个尾随字节 0a
。这适用于我使用的每个程序文件。尾随0a
如何附加到每个输出二进制文件?它在我的输入文件中不存在。
谢谢。
答案 0 :(得分:2)
简单地说,直接从bash这样的
使用xxdxxd outfile > outfile.hex
你会看到,这里不是0a
。
当vim向xxd命令发送一行时,0a
会附加到某处。如果你想在vim内转换 - 尝试使用
vim -b outfile
以二进制模式打开outfile
。