od -c -N 16 <filename.png> 显示的数字是多少

what are the numbers shown by od -c -N 16 <filename.png>

我正在使用 linux,当我输入 od -c -N 16 <filename.png>
我得到了0000000 211 P N G \r \n 032 \n [=12=] [=12=] [=12=] \r I H D R 0000020。 我以为这个命令告诉我文件的类型,但我很好奇数字 0000000 和 211 是什么意思。有人可以帮忙吗?

od 表示 "octal dump"(类似于 hexdumper hd)。它以八进制表示法转储文件的字节。

211 八进制是 2 * 82 + 1 * 81 + 1 = 137,所以你有一个字节值为 137那里。

行首的0000000和下一行开头的0000020是文件中的位置,也是八进制。如果从调用中删除 -N 16 ,您将在八进制转储的左侧看到一列单调递增的八进制数;他们的目的是让您立即看到您正在阅读转储的哪一部分。

参数

-N 16

表示只读取filename.png的前16个字节,而

-c

是一个格式选项,告诉od

  • 将可打印字符打印为字符本身而不是八进制代码,并且
  • 打印具有反斜杠转义序列(例如 \r\n)的不可打印字符作为转义序列而不是八进制数。

这就是不是所有字节都以八进制转储的原因。

如果您想知道文件的文件类型,请使用 file 实用程序:

file filename.png

旁注:您可能对 man 命令感兴趣,它显示了(除其他外)命令行工具的手册页。在这种特殊情况下,

man od

可能很有启发性。