我有一个名为 的文件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?
您选择的输出选项将占用 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 位整数并以八进制显示它们。