本文是关于hexdump工具的格式化字符串的一些记录。
用法:hexdump -e format string
1、格式化串可以包含任意个格式化单元,他们之间通过空格分隔。
2、格式化单元最多由三部分组成。分别是迭代数(iteration count),字节数(byte count),格式(format)。
3、迭代数是可选参数。缺省是1
4、字节数是可选参数(当格式包含转义时(比如%c),该参数只能为1/2/4/8,根据转义字符要求有所不同)。
5、若迭代数或字节数存在,那么必须使用斜杠符"/"连接。其中迭代数在斜杠前,字节数在斜杠后。比如(“1/1”、“1/”、“/1”)
6、格式是必须包含在双引号中,类似于printf中的格式,如("%c")。
7、迭代数和字节数的作用是用来修饰格式的,迭代数/字节数和格式之间使用空格分隔。迭代数说明其后的格式希望被应用的次数,字节数说明其后的格式每次使用的字节数。如('2/4 "%x " "\n"',表示按16进制打印2次,每次读取4个字节的数据,之后换行。重复前述步骤,直到数据结尾)
9、当使用转义字符格式时: %_c, %_p, %_u, %c:字节数必须为1,缺省为1,0也可以。%d, %i, %o, %u, %X, %x:字节数可以为1/2/4,缺省为4。%E, %e, %f, %G, %g:字节数可以为4/8,缺省为8。
10、另有一些特数作用的转义字符:%_a[dox],分别表示十/八/十六进制打印行号。如(%04_ax 表示输出4字节对齐,不足补零且十六进制)
11、简单样例说明:
hexdump -e '"%04_ax " 8/1 "%x " "\n"'
下面是执行逻辑说明:
(1)、【"%04_ax "】 :输出行号+一个空格。
(2)、【8/1 "%02x "】:迭代8次,每次读取一个字节,输出当前字节的16进制值+一个空格,并且值是2字节对齐,不足补0。
(3)、【"\n"】 :换行。
(4)、重复(1),直到数据结束。