# hexdump -h hexdump: invalid option -- 'h' Usage: hexdump [options] file... Options: -b one-byte octal display#單字節八進制顯示 -c one-byte character display#單字節字符顯示 -C canonical hex+ASCII display#規範化 十六進制+ASCII 顯示 -d two-byte decimal display#兩字節十進制顯示 -o two-byte octal display#兩字節八進制顯示 -x two-byte hexadecimal display#兩字節十六進制顯示 -e format format string to be used for displaying data#格式 用於顯示數據的格式字符串 -f format_file file that contains format strings#格式文件 包含格式字符串的文件 -n length interpret only length bytes of input#長度 只解釋輸入的指定長度個字節 -s offset skip offset bytes from the beginning#偏移 跳過開頭指定長度個字節 -v display without squeezing similar lines#顯示時不壓縮類似的行 -V output version information and exit#顯示此幫助並退出
# more a.txt abcde ABCDE # hexdump a.txt 0000000 6261 6463 0a65 4241 4443 0a45 000000c
第一列表示:文件偏移量
第二列表示:以兩個字節爲一組的十六進制
上面的輸出結果翻譯一下,就是:windows
badc0aeBADC0aE
(注意:在Linux中換行符\n 的十六進制爲0a,在windows中,換行爲\r\n的十六進制編碼爲:0d 0a)bash
爲何翻譯成文本成倒序了呢?網絡
其實這是CPU架構所致,感興趣的能夠看下大小端的定義:
1) Little-Endian就是低位字節排放在內存的低地址端,高位字節排放在內存的高地址端。(X86 CPU系列採用的位序)
2) Big-Endian就是高位字節排放在內存的低地址端,低位字節排放在內存的高地址端。
3) 網絡字節序:TCP/IP各層協議將字節序定義爲Big-Endian,所以TCP/IP協議中使用的字節序一般稱之爲網絡字節序。架構
有沒有更加較便於方便的查看方式了?有,這也是較經常使用的方式。
以16進制和相應的ASCII字符顯示文件裏的字符:編碼
# hexdump -C a.txt 00000000 61 62 63 64 65 0a 41 42 43 44 45 0a |abcde.ABCDE.| 0000000c