中文字幕亚洲第一精品|精品国产免费一区二区|久久婷婷五月六月综合版|中文字幕熟妇久久久人妻|久久综合精品国产一区无码|国产成人精品永久免费视频|午夜亚洲国产精品理论片a级|久久精品一区二区三区无码护土

 訪問(wèn)手機(jī)版  

Linux常用命令|Linux培訓(xùn)學(xué)習(xí)|考試認(rèn)證|工資待遇與招聘,認(rèn)準(zhǔn)超級(jí)網(wǎng)工!

招聘|合作 登陸|注冊(cè)

網(wǎng)絡(luò)工程師培訓(xùn)

當(dāng)前位置:網(wǎng)絡(luò)工程師 > 技術(shù)課程 > linux > 熱點(diǎn)關(guān)注 > linux常用命令

Linux中hexdump命令用法

時(shí)間:2019-08-26

linux 命令_linux格式化命令_linux命令

hexdump命令一般用來(lái)查看"二進(jìn)制"文件的十六進(jìn)制編碼,從手冊(cè)上查看,其查看的內(nèi)容還要很多,諸如:ascii, decimal, hexadecimal, octal

參數(shù):

hexdump [-bcCdovx] [-e format_string] [-f format_file] [-n length] [-s skip] file

示例:

新增一個(gè)文本文件linux命令,在test 文本中添加如下內(nèi)容:

[root@node61 test]# cat test abcdeABCDE

linux命令_linux格式化命令_linux 命令

1)最簡(jiǎn)單的查看

[root@node61 test]# hexdump test 0000000 6261 6463 0a65 4241 4443 0a45 000000c

第一列:表示文件文件偏移量

第二列:已兩個(gè)字節(jié)為一組的十六進(jìn)制

通過(guò)上面的輸出,翻譯成文本為:badc0aeBADC0aE(注意:在Linux中換行符/n 的十六進(jìn)制為0a,在windows中,換行為/r/n的十六進(jìn)制編碼為:0d 0a),另:下圖為ASC碼表對(duì)應(yīng)的進(jìn)制編碼

細(xì)心的讀者可能已經(jīng)發(fā)現(xiàn)了,為什么翻譯成文本成倒序了呢?文本中的內(nèi)容不是:abcde

linux格式化命令_linux 命令_linux命令

ABCDE 嗎?

其實(shí)這是X86的CPU架構(gòu)所致,又進(jìn)行了一番研究:字節(jié)序

每一趟從待排序的數(shù)據(jù)元素中選出最。ɑ蜃畲螅┑囊粋(gè)元素,順序放在已排好序的數(shù)列的最后,直到全部待排序的數(shù)據(jù)元素排完。同樣,在設(shè)置端口號(hào)時(shí),也設(shè)計(jì)“網(wǎng)絡(luò)字節(jié)”順序和“本機(jī)字節(jié)”順序的問(wèn)題,inte 86處理器上,用“小頭”形式來(lái)表示多字節(jié)編號(hào):字節(jié)的排序是從最無(wú)意義的字節(jié)到最有意義的字節(jié)。(3)直接選擇排序:每一趟從待排序的記錄中選出關(guān)鍵字最小的記錄,順序放在已排好序的子文件的最后,直到全部記錄排序完畢。

字節(jié)序分類兩類:Big-Endian 和Little-Endian

相關(guān)定義如下:

//而把四個(gè)字節(jié)作為一個(gè)整體(不分類型linux命令,直接打印十六進(jìn)制),應(yīng)該從內(nèi)存高地址到低地址看,0x11020304,低位04放在低地址上。80x86是小端模式,數(shù)據(jù)的高位保存在內(nèi)存的高地址上,數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址上。低位字節(jié)在存儲(chǔ)時(shí)放在高地址上,在傳輸時(shí)低位字節(jié)放在流的末尾。

linux 命令_linux命令_linux格式化命令

ii) Big-Endian就是高位字節(jié)排放在內(nèi)存的低地址端,低位字節(jié)排放在內(nèi)存的高地址端。

iii) 網(wǎng)絡(luò)字節(jié)序:TCP/IP各層協(xié)議將字節(jié)序定義為Big-Endian,因此TCP/IP協(xié)議中使用的字節(jié)序通常稱之為網(wǎng)絡(luò)字節(jié)序。

下面的這個(gè)程序是用來(lái)判斷CPU采用的是哪種模式?

#include<stdio.h>int main(){union w { int a; char b; } c; c.a = 1; if (c.b==1){printf("The CPU is Litle-Endian/n");}else{printf("The CPU is Big-Endian/n");}return 0;} /* end checkCPU*/gcc -o checkCPU.o checkCPU.c[root@node61 test]# ./checkCPU.o The CPU is Litle-Endian

本人本地虛擬機(jī)的是X86的小端模式的

至此上面使用hexdump為什么是順序是倒著的原因了

linux 命令_linux格式化命令_linux命令

有沒(méi)有更加較便于方便的查看方式了?有,這也是較常用的方式,見(jiàn)下面的b)介紹;

b)以16進(jìn)制和相應(yīng)的ASCII字符顯示文件里的字符

[root@node61 test]# hexdump -C test #常用00000000 61 62 63 64 65 0a 41 42 43 44 45 0a |abcde.ABCDE.|0000000c

這里既能顯示16進(jìn)制也能顯示ascii碼

c)以偏移量格式輸出,參數(shù) -s

[root@node61 test]# hexdump -C test 00000000 61 62 63 64 65 0a 41 42 43 44 45 0a |abcde.ABCDE.|0000000c[root@node61 test]# hexdump -C -s 6 test 00000006 41 42 43 44 45 0a |ABCDE.|0000000c

第一行的abcde換行 的字符都沒(méi)有了

其他hexdump還有很多的用法,具體可以參看man hexdump

以上就是本篇文章的全部?jī)?nèi)容,如果還有其他問(wèn)題和不明白的地方可以給我們投稿或者在下方留言。