linux hexdump使用

# 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
相關文章
相關標籤/搜索