linux 命令 od 的输出中的“005”是什么意思?

Ren*_*Ren 1 od

我有一个名为 的文件input_file,以下是其内容input_file

$ cat input_file     
1
2
3
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)

然后我运行以下命令:

$ od -to2 input_file
Run Code Online (Sandbox Code Playgroud)

输出:

0000000 005061 005062 005063 005064 005065 005066 005067 005070
0000020 005071
0000022
Run Code Online (Sandbox Code Playgroud)

我的问题是:输出中的“005”是什么意思od

Ste*_*ris 5

您选择的输出选项将占用 2 个字节并将结果显示为八进制数。

所以你从数字1和字符开始\n。我们可以更容易地看到这一点od -cx

% od -cx f
0000000   1  \n   2  \n   3  \n   4  \n   5  \n   6  \n   7  \n   8  \n
           0a31    0a32    0a33    0a34    0a35    0a36    0a37    0a38
0000020   9  \n
           0a39
0000022
Run Code Online (Sandbox Code Playgroud)

对于您od -to2,它将使用这 2 个字符并将它们视为 16 位数字的“低字节、高字节”。

所以这个数字是 10*256+49(这\n是 ASCII 10,是高字节;1是 ASCII 49,是低字节)。那个总数是 2609。

八进制的 2609 是 005061 - 这是输出中的第一个数字。(在十六进制中它是 a31,它也与od -cx输出匹配)。

所以这就是你所看到的;od 正在将您的输入转换为 16 位整数并以八进制显示它们。