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

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

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

$ cat input_file     
1
2
3
4
5
6
7
8
9

然后我运行以下命令:

$ od -to2 input_file

输出:

0000000 005061 005062 005063 005064 005065 005066 005067 005070
0000020 005071
0000022

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

答案1

您选择的输出选项将占用 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

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

因此,该数字为 10*256+49(\nASCII 10,是高字节;1ASCII 49,是低字节)。这个总数是 2609。

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

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

答案2

这并没有多大意义。您可以使用-h(十六进制)选项获得更好的图像。就其价值而言,这是以十进制/八进制/十六进制/字符/utf8 呈现的第一行:

005061: 2609 05061 0xa31 text "\0121" utf8 \340\250\261
005062: 2610 05062 0xa32 text "\0122" utf8 \340\250\262
005063: 2611 05063 0xa33 text "\0123" utf8 \340\250\263
005064: 2612 05064 0xa34 text "\0124" utf8 \340\250\264
005065: 2613 05065 0xa35 text "\0125" utf8 \340\250\265
005066: 2614 05066 0xa36 text "\0126" utf8 \340\250\266
005067: 2615 05067 0xa37 text "\0127" utf8 \340\250\267
005070: 2616 05070 0xa38 text "\0128" utf8 \340\250\270

也就是说,每隔一个字节都是 012 ( ^J),并且每个其他byte 是十进制数字。由于我使用的程序,utf8 是“免费”出现的(hex)。

相关内容