hexdump是Linux下的一個二進制文件查看工具,可以將二進制文件轉換為ASCII、10進制、16進制或8進制進行查看。
首先我們准備一個測試用的文件test,十六進制如下:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
選項:
-n length
只格式化輸入文件的前length個字節
-C
輸出十六進制和對應字符
輸入:
hexdump -n 13 -C test
輸出:
00000000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c |.............|0000000d
-s 從偏移量開始輸出
輸入:
hexdump -n 13 -C -s 30 test
輸出:
0000001e 1e 1f 20 21 22 23 24 25 26 27 28 29 2a |.. !"#$%&'()*|0000002b
hexdump高級用法:
-e 指定格式字符串,格式字符串包含在一對單引號中,格式字符串形如:'a/b "format1" "format2"'
每個格式字符串由三部分組成,每個由空格分隔,
第一個形如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選項