为什么十六进制转储中的偏移量比以前多 10?

Why are offsets in hex dump 10 more than previous?

我对这一切都是陌生的。我刚得到一个文件的十六进制转储,我很困惑。我想问一下为什么地址相差 10。偏移量后只有 8 个字节,但 00000000 之后的下一个偏移量是 00000010 而不是 00000008。

00000000  7f 45 4c 46 01 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 03 00 01 00 00 00  30 84 04 08 34 00 00 00  |........0...4...|
00000020  ec 22 00 00 00 00 00 00  34 00 20 00 08 00 28 00  |."......4. ...(.|

00、10 和 20 是十六进制的字节偏移量。所以“10”的偏移量是 16 个字节的偏移量。

xxd 个例子

您可以使用 xxd 的 -c 标志指定每行的字节数。使用 16 模拟默认行为:

$ printf "The quick brown fox jumps over the lazy dog" | xxd -c 16
00000000: 5468 6520 7175 6963 6b20 6272 6f77 6e20  The quick brown
00000010: 666f 7820 6a75 6d70 7320 6f76 6572 2074  fox jumps over t
00000020: 6865 206c 617a 7920 646f 67              he lazy dog

示例 12

使用偏移量 12 会导致增量为 12 字节(十六进制)。

$ printf "The quick brown fox jumps over the lazy dog" | xxd -c 12
00000000: 5468 6520 7175 6963 6b20 6272  The quick br
0000000c: 6f77 6e20 666f 7820 6a75 6d70  own fox jump
00000018: 7320 6f76 6572 2074 6865 206c  s over the l
00000024: 617a 7920 646f 67              azy dog

转换偏移量,我们得到预期的结果:

0x0c = 12
0x18 = 24
0x24 = 36