我想从二进制文件中获取 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
我不同的是,我还没有找到一种方法来摆脱空格,同时保持字节顺序不变。
该-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 系统都以小字节序模式使用它们。
归档时间: |
|
查看次数: |
2648 次 |
最近记录: |