溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux的hexdump工具用來做什么

發(fā)布時(shí)間:2022-02-18 10:25:38 來源:億速云 閱讀:198 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“Linux的hexdump工具用來做什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Linux的hexdump工具用來做什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

hexdump是Linux下的一個(gè)二進(jìn)制文件查看工具,它可以將二進(jìn)制文件轉(zhuǎn)換為ASCII、八進(jìn)制、十進(jìn)制、十六進(jìn)制格式進(jìn)行查看。

參數(shù):

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

示例:

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

[root@node61 test]# cat testabcde
ABCDE

1)最簡單的查看

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

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

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

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

Linux的hexdump工具用來做什么

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

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

字節(jié)序:其實(shí)就是字節(jié)的順序,這里是針對大于兩個(gè)字節(jié)來說,一個(gè)字節(jié)就沒有排序而言了,然而,在大部分的工作中,我們都很少直接和字節(jié)序打交道。

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

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

i) Little-Endian就是低位字節(jié)排放在內(nèi)存的低地址端,高位字節(jié)排放在內(nèi)存的高地址端。(X86 CPU系列采用的位序) 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è)程序是用來判斷CPU采用的是哪種模式?

#includeint 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.oThe CPU is Litle-Endian

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

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

有沒有更加較便于方便的查看方式了?有,這也是較常用的方式,見下面的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 test00000000  61 62 63 64 65 0a 41 42  43 44 45 0a              |abcde.ABCDE.|
0000000c
[root@node61 test]# hexdump -C -s 6 test00000006  41 42 43 44 45 0a                                 |ABCDE.|
0000000c

第一行的abcde換行 的字符都沒有了

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

讀到這里,這篇“Linux的hexdump工具用來做什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI