BASh - 将十六进制值列表转换为二进制文件(应用程序)

时间:2014-09-04 21:28:26

标签: bash hex binaryfiles binary-data

我有一个包含来自小程序的代码的十六进制表示的文件,并且我试图将其实际转换为程序本身。

例如,以下是存储在文件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如何附加到每个输出二进制文件?它在我的输入文件中不存在。

谢谢。

1 个答案:

答案 0 :(得分:2)

简单地说,直接从bash这样的

使用xxd
xxd outfile > outfile.hex

你会看到,这里不是0a

当vim向xxd命令发送一行时,0a会附加到某处。如果你想在vim内转换 - 尝试使用

vim -b outfile

以二进制模式打开outfile