程序的文件格式

The file-format of a program

我想知道编写的程序(例如用 C 或 Rust)的编译源代码将以哪种格式生成。

我知道输出文件是机器语言的二进制编码文件(如每本手册和文档所述)。我认为用我选择的 VIM 之类的编辑器打开文件应该会显示很多 1 和 0,对吗?但每次我在网上搜索该主题时,我只找到如何在 VI 中以十六进制打开二进制文件(主要使用 'xxd')。

有没有办法像二进制文件一样查看二进制文件? --> 100101101111

编译后的程序是什么格式?

ones 和 zeros 有点浪费屏幕 space,所以在 1997 年,一个非常聪明的人发现可以使用以下天才方案有效地打包信息:

Binary             Witchcraft
  0000    -->         0
  0001    -->         1
  0010    -->         2
  0011    -->         3
          ...
  1110    -->         E
  1111    -->         F

因此,通过使用符号 0、1、...、9、A、B、...、F,您可以同时表示所有四个位。当您使用现代二进制数据显示工具(通常称为 "hex editor" 以纪念这种魔法)时,您将看到以这种有效表示形式显示的数据位。

正如这里很多人所说,以二进制为基础查看二进制文件可能没有用,但如果你想,xxd 恰恰是一个很好的工具(带有 -b 选项) ,并且您不需要 vim 即可使用它:

$ cat my_bin_file | xxd -b