【问题标题】:C++ question on file formats and od关于文件格式和 od 的 C++ 问题
【发布时间】:2011-02-23 06:14:54
【问题描述】:

我有以下简单的代码:

ofstream output("test");
output << 'a';

当我对文件进行八进制转储时,我得到了这个:

0000000 000141
0000001

我可以看到 000141(以 8 为基数)是 8 位宽,而 0000001 可能是 EOF。 所有 0 的第一个字节是什么,为什么它在那里?我知道它是 null 是 ascii 但它的目的是什么?

【问题讨论】:

  • 我相信左列中的那些数字是字节索引号,而不是文件中的字符(否则,为什么它们有八位而不是六位?)
  • @James:很好。更深层次的谜团是八进制的原因。
  • 文件中不会有特定的 EOF 标记,因为这要求文件中没有该标记(与 C 样式中不能有 '\0' 的原因相同细绳)。文件长度将独立维护。

标签: c++ file-format octal


【解决方案1】:

这与 C++ 无关(除了源代码显示我们有一个长度为 1 的文件,其中包含一个 'a'),你可能应该标记这个 linux 或 hexdump,因为它看起来我喜欢使用八进制输出的 linux 工具 hd/hexdump 的输出。

请参阅此Wikipedia article 了解更多信息。

编辑:啊,我错过了问题标题。所以它是od,hd 的八进制“兄弟”。

第一列显示文件偏移量(7 位,十六进制),就像 James 所说的那样。如果文件更长,它会更明显。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    • 2022-10-12
    • 2021-10-11
    • 1970-01-01
    • 2011-05-27
    • 2011-07-29
    相关资源
    最近更新 更多