我有一个文件,其中包含一个小程序中代码的十六进制表示,并试图将其实际转换为程序本身。
例如,这里有一个这样的文本示例,存储在文件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
是如何附加到每个输出二进制文件的?它不存在于我的输入文件中。
谢谢。
简单地说,直接从类似bash的中使用xxd
xxd outfile > outfile.hex
你会看到,这里没有任何0a
。
当vim向xxd命令发送一行时,0a
被附加在某个位置。如果你想在vim内部转换-尝试使用
vim -b outfile
以二进制模式打开CCD_ 7。