Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

hexdump 進階技巧:避開位元組序陷阱、抑制重複行、精確切片檢視

編輯:Linux 系統常見問題解答

預設行為陷阱:兩位元組分組 + Little-endian 顯示

$ echo -n "Happy New Year!" | hexdump
0000000 6148 7070 2079 654e 2077 6559 7261 0a21
0000010

x86 Little-endian 導致每兩位元組反序:48 61 → 6148 (即 'H' 'a' 顯示為 'aH'),極難閱讀。

核心參數組合

參數功能
-C, --canonicalCanonical hex+ASCII 顯示:**單位元組**、**十六進位 + 右側 ASCII**,解決位元組序問題
-v, --verbose顯示**所有**行,**不省略**重複行 (預設以 * 略過)
-n LEN, --length僅顯示前 LEN 位元組
-s OFFSET, --skip跳過前 OFFSET 位元組
-e "format"自訂輸出格式 (進階)

黃金組合:hexdump -Cv

$ echo -n "Happy New Year!" | hexdump -Cv
00000000  48 61 70 70 79 20 4e 65  77 20 59 65 61 72 21 0a  |Happy New Year!.|
00000010
  • 單位元組顯示:48 61 70 70... 即 'H' 'a' 'p' 'p'...
  • 右側 ASCII 直接可讀
  • 不省略重複行

精確切片檢視

# 僅看第 1 位元組
$ hexdump -Cv -n 1 file
00000000  48  |H|
00000001

# 僅看第 2-3 位元組 (跳過 1,長度 2)
$ hexdump -Cv -s 1 -n 2 file
00000001  61 70  |ap|
00000003

# 看特定區塊 (如 MBR 前 512 位元組)
$ hexdump -Cv -n 512 /dev/sda

自訂格式範例 (-e)

# 只顯示十六進位,每行 16 位元組,無 ASCII
$ hexdump -v -e '16/1 "%02x " "\n"' file

# 只顯示 ASCII (非列印字元顯示 .)
$ hexdump -v -e '16/1 "%_p" "\n"' file

# 位移 + 十六進位 + ASCII (類似 -C 但可控制)
$ hexdump -v -e '"%08_ax  " 8/1 "%02x " "  " 8/1 "%02x " "  |" 16/1 "%_p" "|\n"' file

實戰場景

場景指令
檢查二進制檔案 Magic Numberhexdump -Cv -n 4 file (如 7f 45 4c 46 = ELF)
分析網路封包 (pcap 全域標頭)hexdump -Cv -n 24 capture.pcap
尋找特定位元組模式hexdump -Cv file | grep "ff fe" (UTF-16 LE BOM)
比較兩檔案差異diff <(hexdump -Cv file1) <(hexdump -Cv file2)
查看裝置前 1MB (分區表、開機碼)hexdump -Cv -n 1M /dev/sda

替代工具

  • xxd:Vim 內建,xxd file 類似 hexdump -C,支援 xxd -r 反轉寫入
  • od:POSIX 標準,od -tx1z -Ax file 相近 hexdump -Cv
  • xxd -i:輸出 C 語言陣列初始化碼 (嵌入式開發常用)
Copyright © Windows教程網 All Rights Reserved