hexdump:如何在十六进制模式下抑制偏移列

hexdump:如何在十六进制模式下抑制偏移列

我想从二进制文件中获取 16 个字节,从第 5 个字节开始,不使用空格分隔字节或单词。

hexdump会做我想要的,只是偏移列干扰了输出:

$ hexdump -s5 -n16 -xe '/1 "%01X"' binfile

od任务也很好,甚至可以被告知抑制偏移列,尽管我不得不使用它sed来消除间距:

$ od -An -tx1 -j5 -N16 | sed 's/ //g' binfile

我确信它可以在没有 的情况下工作sed,但由于我od在十六进制模式下遇到了许多与字节顺序(交换字节)相关的问题,这并不像看起来那么容易。例如,更改-tx1为更高的值会交换字节并弄乱我想要的 128 位值。-tx1很好,但不像hexdump我还没有找到摆脱空格的方法尽管同时保持字节顺序不变。

答案1

-x选项指示 hexdump 显示偏移量,并且随后指定格式不会抑制该偏移量。摆脱该-x选项。

$ hexdump -s5 -n16 -e '/1 "%01X"' <<<@abcdefghijklmnopqrstuvwxyz; echo
65666768696A6B6C6D6E6F7071727374

如果您想按照平台的字节序读取两字节值-x(在 x86 和 ARM 等小字节序平台上交换两个字节),请%02X使用%01X.

1 ARM CPU 支持两种字节序,但几乎所有 Unix 系统都以小字节序模式使用它们。

相关内容