命令使用:Hexdump 二进制、十六进制查看器
简介:hexdump命令是Linux下查看二进制文件的工具。但它的强大在于它的格式化输出。
默认的输出格式:
hexdump -n 100 u-boot-real.bin
0000000 0013 ea00 f014 e59f f014 e59f f014 e59f0000010 f014 e59f f014 e59f f014 e59f f014 e59f0000020 01c0 c7e0 0220 c7e0 0280 c7e0 02e0 c7e0
hexdump -n 100 -C u-boot-real.bin
00000000 13 00 00 ea 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 |................|00000010 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 |................|00000020 c0 01 e0 c7 20 02 e0 c7 80 02 e0 c7 e0 02 e0 c7 |.... ...........|00000030 40 03 e0 c7 a0 03 e0 c7 00 04 e0 c7 78 56 34 12 |@...........xV4.|
选项:
-n length 只读取文件的前length个字节进行格式化输出。默认为十进制,单位字节。
-s offset 开始偏移量,从文件顶部到offset个字节片开始读取文件。
-C 每一字节以16进制显示,每行共16个字节,尾部附加16个相应的ASCII字符。
-c 每一字节以ASCII字符显示,其余同“-b”参数。
-b 每一字节以8进制显示,每行共16字节,每行开始以16进制显示文件位置偏移量。
-d 双字节十进制显示,其余同“-b”参数。
-o 双字节8进制显示,其余同“-b”参数。-v 去除中间显示的“*”字符。
-x 双字节16进制显示,其余同“-b”参数。
高级用法:
-e 指定格式字符串,同一行可跟多个-e选项。格式字符串包含在一对单引号中,每个格式字符串由三部分组成,每个由空格分隔,第一个形如"a/b", b表示对每b个输入字节应用格式“format_1”,a表示对每a*b个字节应用格式"format_2",一般a>b,且b只能为1,2,4,另外a可以省略此时x的值为1。
格式 ‘x/y "format_1" "format_2"’
格式字符串format_x类似于printf,部分支持的字符如下:
%d,%i,%o,%u,%X,%x a或b的取值,默认为4字节,支持取值1,2,4
%E,%e,%f,%G,%g a或b的取值,默认为8字节,支持取值4,12
%_c,%_p,%_u,%c a或b的取值只能是1字节
%_a[dox] 显示当前字节的下一字节在文件中的偏移量,[dox]可替换为d、o、x分加表示以10、8、16进制方式显示
示例:
格式化u-boot.bin与u-boot提供命令md显示一致
命令:hexdump -n 256 -e '1 "%08_ax: " ""' -e '4/4 "%08x "" |"' -e '16/1 "%_p" "|\n"' u-boot-real.bin
00000000: ea000013 e59ff014 e59ff014 e59ff014 |................|00000010: e59ff014 e59ff014 e59ff014 e59ff014 |................|00000020: c7e001c0 c7e00220 c7e00280 c7e002e0 |.... ...........|00000030: c7e00340 c7e003a0 c7e00400 12345678 |@...........xV4.|00000040: c7e00000 57e00000 c7e00000 c7e38000 |.......W........|00000050: c7e7d04c e10f0000 e3c0001f e38000d3 |L...............|
u-boot命令:md 0x57e00000
57e00000: ea000013 e59ff014 e59ff014 e59ff014 ................
57e00010: e59ff014 e59ff014 e59ff014 e59ff014 ................
57e00020: c7e001c0 c7e00220 c7e00280 c7e002e0 .... ...........
57e00030: c7e00340 c7e003a0 c7e00400 12345678 @...........xV4.
57e00040: c7e00000 57e00000 c7e00000 c7e38000 .......W........
57e00050: c7e7d04c e10f0000 e3c0001f e38000d3 L...............