如果樓主是問Dos 和 Unix文本格式互相轉(zhuǎn)化,那就是unix2dos, dos2unix兩個命令。Unix文件是不區(qū)分二進(jìn)制和文本格式的,不存在什么“二進(jìn)制和文本互相轉(zhuǎn)化”問題。對文件的處理,完全在于應(yīng)用程序怎么去處理它。例如,編譯出來的a.out是ELF格式的二進(jìn)制文件,用shell就是直接加載并運(yùn)行該程序,但是如果用file a.out,則是從a.out中提取信息來判斷a.out文件格式。如果是在編程中,那更不用區(qū)分,F(xiàn)ILE *fp = fopen(yourfilename, "r")和fopen(yourfilename, "rb")是完全一樣的。
公司主營業(yè)務(wù):成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出欽南免費(fèi)做網(wǎng)站回饋大家。
在線轉(zhuǎn)換器
hexdump命令,可以將文件(不光是二進(jìn)制文件)按各種格式顯示,當(dāng)然包括ASCII。
你可以用這個命令再配合‘’輸入到文件里,就起到轉(zhuǎn)換的效果了。
查看二進(jìn)制文件,用od或hexdump命令。
$?od?-tx1?-tc?-Ax?binFile
000000??61??62??63??64??65??31??32??33??34??35??61??62??63??64??65??31
a???b???c???d???e???1???2???3???4???5???a???b???c???d???e???1
000010??32??33??34??35??61??62??63??64??65??31??32??33??34??35??61??62
2???3???4???5???a???b???c???d???e???1???2???3???4???5???a???b
000020??63??64??65??31??32??33??34??35??0a
c???d???e???1???2???3???4???5??\n
000029
-tx1選項(xiàng)表示將文件中的字節(jié)以十六進(jìn)制的形式列出來,每組一個字節(jié)(類似hexdump的-c選項(xiàng))
-tc選項(xiàng)表示將文件中的ASCII碼以字符形式列出來(和hexdump類似,輸出結(jié)果最左邊的一列是文件中的地址,默認(rèn)以八進(jìn)制顯示)
-Ax選項(xiàng)要求以十六進(jìn)制顯示文件中的地址
用Vim編輯器修改二進(jìn)制文件需要Vim和xxd命令配合,首先用Vim的-d選項(xiàng)來打開文件,一定要加-d選項(xiàng):vim
-d
test.bin,然后在Vim中執(zhí)行如下命令::%!xxd,接著就可以任意編輯修改二進(jìn)制文件了。修改完成后,先在Vim中執(zhí)行::%!xxd
-r,然后用:wq就可以保存修改了。
一、在Linux下查看二進(jìn)制文件的軟件:
xxd (2進(jìn)制)
hexdump (16進(jìn)制)
二、編輯:
1、biew
2、hexedit
3、vim
Vim 來編輯二進(jìn)制文件。Vim 本非為此而設(shè)計的,因而有若干局限。但你能讀
取一個文件,改動一個字符,然后把它存盤。結(jié)果是你的文件就只有那一個字符給改了,
其它的就跟原來那個一模一樣。
要保證 Vim 別把它那些聰明的竅門用錯地方,啟動 Vim 時加上 "-b" 參數(shù):
vim -b datafile
這個參數(shù)設(shè)定了 'binary' 選項(xiàng)。其作用是排除所有的意外副作用。例如,'textwidth'
設(shè)為零,免得文本行給擅自排版了。并且,文件一律以 Unix 文件格式讀取。
二進(jìn)制模式可以用來修改某程序的消息報文。小心別插入或刪除任何字符,那會讓程序運(yùn)
行出問題。用 "R" 命令進(jìn)入替換模式。
文件里的很多字符都是不可顯示的。用 Hex 格式來顯示它們的值:
:set display=uhex
另外,也可以用命令 "ga" 來顯示光標(biāo)下的字符值。當(dāng)光標(biāo)位于一個 字符上時,
該命令的輸出看起來就像這樣:
27, Hex 1b, Octal 033
文件中也許沒那么多換行符。你可以關(guān)閉 'wrap' 選項(xiàng)來獲得總覽的效果:
:set nowrap
字 節(jié) 位 置
要發(fā)現(xiàn)你在文件中的當(dāng)前字節(jié)位置,請用這個命令:
g CTRL-G
其輸出十分冗長:
Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206
最后兩個數(shù)字就是文件中的當(dāng)前字節(jié)位置和文件字節(jié)總數(shù)。這已經(jīng)考慮了 'fileformat'
選項(xiàng)導(dǎo)致?lián)Q行符字節(jié)不同的影響。
要移到文件中某個指定的字節(jié),請用 "Go" 命令。例如,要移到字節(jié) 2345:
2345go
使 用 XXD
一個真正的二進(jìn)制編輯器用兩種方式來顯示文本: 二進(jìn)制和十六進(jìn)制格式。你可以在 Vim
里通過轉(zhuǎn)換程序 "xxd" 來達(dá)到這效果。該程序是隨 Vim 一起發(fā)布的。
首先以二進(jìn)制方式編輯這個文件:
vim -b datafile
現(xiàn)在用 xxd 把這個文件轉(zhuǎn)換成十六進(jìn)制:
:%!xxd
文本看起來像這樣:
0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI
0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0
0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59.
現(xiàn)在你可以隨心所欲地閱讀和編輯這些文本了。 Vim 把這些信息當(dāng)作普通文本來對待。
修改了十六進(jìn)制部分并不導(dǎo)致可顯示字符部分的改變,反之亦然。
最后,用下面的命令把它轉(zhuǎn)換回來:
:%!xxd -r
只有十六進(jìn)制部分的修改才會被采用。右邊可顯示文本部分的修改忽略不計。
查看一些二進(jìn)制文件的內(nèi)容,比如二進(jìn)制文件中包含的.某些字符串??梢詫⒍M(jìn)制文件轉(zhuǎn)換為ASCII、10進(jìn)制、16進(jìn)制或8進(jìn)制進(jìn)行查看。
-b 每一字節(jié)以八進(jìn)制顯示,一行共16個字節(jié),一行開始以十六進(jìn)制顯示偏移值;
0000000 177 105 114 106 002 001 001 000 000 000 000 000 000 000 000 000
-c 每一字節(jié)以ASCII字符顯示,其余同上;
0000000 177 E L F 002 001 001
-C 每一字節(jié)以16進(jìn)制顯示,一行共16個字節(jié),尾部附加16個相應(yīng)的ASCII字符;
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF.。。。。。|
-n 只解釋指定長度字節(jié)
單位:默認(rèn)十進(jìn)制,0x或0X開頭則為16進(jìn)制,0開頭則為8進(jìn)制。默認(rèn)為字節(jié),b則為512字節(jié),k則為1024字節(jié),m則為1048576字節(jié)
-d 雙字節(jié)十進(jìn)制顯示
-o 雙字節(jié)八進(jìn)制顯示
-v 去除中間顯示的“*”字符
-x 雙字節(jié)十六進(jìn)制顯示
-e 格式化參數(shù)
上面就是Linux中hexdump命令的用法介紹了,從文中我們可以了解到,hexdump命令并不是只能查看十六進(jìn)制的,還能進(jìn)行十進(jìn)制、八進(jìn)制等的顯示。