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" " |\n"' sum_of_array.bin
效果
$ hexdump -e '1/4 "0x%08_ax "' -e '1/4 "%08X " " | "' -e '4/1 "%01_p" " |\n"' 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 | ... |
