hexdump
hexdump用于以16进制、10进制、8进制、ascii码形式打印文件内容,也可以是标准输入的内容。
用法
hexdump [选项] 文件 ...
选项
选项 | 参数 | 说明 |
---|---|---|
-b | 单字节8进制格式显示 | |
-c | 单字节字符格式显示 | |
-o | 两byte八进制格式显示 | |
-d | 两byte十进制格式显示 | |
-x | 两byte十六进制格式显示 | |
-C | 标准的hex+ASCII格式显示 | |
-e | 格式 | 指定格式化输出表达式 |
-f | 格式文件 | 指定格式换输出表达式文件 |
-n | 长度 | 仅显示指定长度字节的数据 |
-s | 偏移 | 跳过指定长度字节的数据 |
-v | 显示时不压缩相似的行 |
前面六个选项其实是通过后面五个选项实现的显示效果。
hexdump高级用法:
-e
指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如
'a/b "format1" "format2"'
每个格式字符串由三部分组成,每个部分由空格分隔,第一个形如a/b,表示每a个元素为一行,每个元素占b个字节。b表示对每b个输入字节应用format1格式,a表示对每a个输入字节应用format2格式,一般a>b,且b只能为1,2,4,另外a可以省略,省略则a=1。format1和format2中可以使用类似printf的格式字符串,如:
- %02d:两位十进制
- %03x:三位十六进制
- %02o:两位八进制
- %c:单个字符等
还有一些特殊的用法:
- %_ad:标记下一个输出字节序序列的偏移序号,用十进制表示
- %_ax:标记下一个输出字节序序列的偏移序号,用十六进制表示
- %_ao:标记下一个输出字节序序列的偏移序号,用八进制表示
- %_p:对不能以常规字符显示的用
.
代替
同一行如果要显示多个格式字符串,则可以跟多个-e选项
hexdump -e '1/1 "%08_ax: "' -e '4/4 "%08X " " "' -v test.bin
hexdump -e '1/1 "%08_ax: "' -e '4/1 "%08X " " | "' -e '16/1 "%_p" " "' -v test.bin
hexdump -e '1/1 "%08_ad: "' -e '/1 "hex = %08X | "' -e '1/1 "dec = %10d | "' -e '/1 " "' -v test.bin