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

syn*_*ror 2 hexdump

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

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

$ hexdump -s5 -n16 -xe '/1 "%01X"' binfile
Run Code Online (Sandbox Code Playgroud)

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

$ od -An -tx1 -j5 -N16 | sed 's/ //g' binfile
Run Code Online (Sandbox Code Playgroud)

我相信它会工作没有sed,但我有许多问题与od在有关字节序(交换字节)十六进制模式,这并不容易,因为它看起来。例如,更改-tx1为更高的值将交换字节并弄乱我想要的 128 位值。-tx1很好,但与hexdump我不同的是,我还没有找到一种方法来摆脱空格,同时保持字节顺序不变。

Gil*_*il' 5

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

$ hexdump -s5 -n16 -e '/1 "%01X"' <<<@abcdefghijklmnopqrstuvwxyz; echo
65666768696A6B6C6D6E6F7071727374
Run Code Online (Sandbox Code Playgroud)

如果你想在这个平台的字节顺序读取两个字节的值的方式-x做(这在交换little-endian的平台,如x86和ARM¹两个字节),使用%02X代替%01X

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