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/4 "0x%08_ax "' -e '1/4 "%08X " " | "' -e '4/1 "%01_p" " | "' sum_of_array.bin
效果
$ hexdump -e '1/4 "0x%08_ax "' -e '1/4 "%08X " " | "' -e '4/1 "%01_p" " |
"' sum_of_array.bin
0x00000000 EAFFFFFF | .... |
0x00000004 E59F0018 | .... |
0x00000008 E59F1018 | .... |
0x0000000c E3A03000 | .0.. |
0x00000010 E4D12001 | . .. |
0x00000014 E0823003 | .0.. |
0x00000018 E1510000 | ..Q. |
0x0000001c 1AFFFFFB | .... |
0x00000020 EAFFFFFE | .... |
0x00000024 0000002F | /... |
0x00000028 0000002C | ,... |
0x0000002c 0019140A | ... |