代码之家  ›  专栏  ›  技术社区  ›  Cloud

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

  •  1
  • Cloud  · 技术社区  · 11 年前

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

    例如,这里是存储在文件中的此类文本的示例, 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 ,尾随在二进制输出文件的末尾。我使用的每个程序文件都会发生这种情况。后面怎么样 0年 是否附加到每个输出二进制文件?它不在我的输入文件中。

    非常感谢。

    1 回复  |  直到 11 年前
        1
  •  2
  •   clt60    11 年前

    简单地,直接从bash中使用xxd

    xxd outfile > outfile.hex
    

    你会发现,这里没有 0a .

    这个 0年 当vim向xxd命令发送一行时,附加到某个位置。如果你想在vim内部转换,请尝试使用

    vim -b outfile
    

    什么打开了 outfile 以二进制模式。

    推荐文章