文字檔案和二進位制檔案有什麼區別?
2008-05-13 22:14
二進位制檔案,這個再基礎不過的名詞,正因為它的無處不在,或許沒有人會關注它背後隱含的內容。其實我也一樣,在寫下
這些文字之前,我也是認為二進位制檔案就像空氣一樣,平常得讓人完全忽略了。
很偶然的,今天在寫**的時候使用了fopen函式:
file * fopen (const char * filename, const char * mode)
大家可以看到第二個引數是mode,而這個引數定義了檔案開啟的方式,w、a等都可以做為函式的實參。除此之外,還有兩個值:t和
b。這兩個值定義了檔案是按照文字(text)還是二進位制(binary)方式開發。正是這個兩個值引起了我對二進位制檔案的興趣,因為它們
上來的,至少我是不行了。查閱了資料之後,發現答案就在自己的知識範圍之內的:將檔案看作是由乙個乙個位元組(byte) 組成的,
那麼文字檔案中的每個位元組的最高位都是0,也就是說文字檔案使用了乙個位元組中的七位來表示所有的資訊,而二進位制檔案則是將字
節中的所有位都用上了。這就是兩者的區別;
接著,第二個問題就是檔案按照文字方式或者二進位制方式開啟,兩者會有什麼不同呢?其實不管是二進位制檔案也好,還是
文字檔案也好,都是一連串的0和1,但是開啟方式不同,對於這些0和1的處理也就不同。如果按照文字方式開啟,在開啟的時候會
進行translate,將每個位元組轉換成ascii碼,而以按照二進位制方式開啟的話,則不會進行任何的translate;
最後就是文字檔案和二進位制檔案在編輯的時候,使用的方式也是不同的。譬如,你在記事本中進行文字編輯的時候,你進
行編輯的最小單位是位元組(byte);而對二進位制檔案進行編輯的話,最小單位則是位(bit),當然我們都不會直接通過手工的方式對二
進製檔案進行編輯了。
----------------2---------------
二進位制檔案和文字檔案都是0,1組成,但檔案系統對他們的解釋不一樣,一般系統呼叫(或win32api)都會分為字元
式和二進位制式(或流式).文字或字元檔案代表慢速裝置,而二進位制檔案代表可以大塊資料操作的快速外設,二進位制檔案內容基本無意義
,系統對它不加解釋地傳給呼叫者,解釋由呼叫者負責.而對字元檔案,系統把他理解為單位元組的ascii或多位元組的unicode字串,並且
對其中的特殊字元(如回車等)加以特殊處理.所以同乙個檔案,可以使用不同型別的系統呼叫.
文字檔案也叫做ascii碼檔案,與以『文字方式』開啟檔案不是同乙個概念!文字檔案儲存的是asscii碼字元,即儲存在磁碟上只占用二進位制的0x20--0x7e。另外,還有回車(0x0d),換行(0x0a),tab(0x09)等,所以有可壓縮的空間。
換行和回車是不同的,而且在不同的作業系統,解釋也不相同。『/n』一般會作業系統被翻譯成"行的結束",即lf(line-feed);『/r』會被翻譯成"回車",即cr(cariage-return)
回車(cr)和換行(lf)符都是用來表示「下一行」的。而標準沒有規定要使用哪乙個。於是產生了三種不同的用法:
(1) dos和windows採用回車+換行(cr+lg)表示下一行
(2) unix採用換行符(lf)表示下一行
(3) mac機採用回車符(cr)表示下一行。
當在不同的系統間傳遞檔案,就要涉及格式的轉換。
文字方式和二進位制方式的最大區別在於文字方式對於'/n'換行符的理解不同
(1)在dos平台下,該字元會被展開成< lf>兩個控制字元(相當於"/r/n"),在ascii字符集下是 0dh,0ah
(2)在unix平台下,僅僅是,不會展開。
(3)在二進位制方式下,不管是什麼平台,'/n'都是精確的。
在linux/unix 系統上,只有一種檔案型別的系統,帶b字母的模式和對應的不帶b字母的模式是相同的。(unix文字檔案通常不包含ctrl+z和/r)
關於eof:
eof可以作為文字檔案的結束標誌,但不能作為二進位制檔案的結束符.feof函式既可以判斷二進位制檔案,又可以判斷文字檔案.
eof在windows下是ctrl+z,linux下是ctrl+d.
文字模式 二進位制模式 文字檔案 二進位制檔案
這幾個概念很常見但是也容易搞混。前兩者是相反的意思,後兩者是一對。1.文字模式 textmode 和二進位制模式 binarymode 的 區別0.無論你用哪種語言進行程式設計,也無論你用哪個函式進行檔案操作 庫函式也好,直接作業系統api也好 最終的檔案開啟的操作都是由作業系統來進行的,因此各種語...
文字檔案與二進位制檔案
從本質上說所有檔案都是二進位制檔案,文字i o是在二進位制i o基礎上提供的一層抽象,它封裝了字元的編碼和解碼過程。在文字i o中自動進行編碼與解碼。在windows和dos系統中,狹義的文字檔案是指擴充套件名為txt的檔案。實際上,那些沒有規定格式的,由可理解的的ascii以及其它編碼文字組成的檔...
文字檔案與二進位制檔案
維基百科 二進位制檔案一般指包含ascii及擴充套件ascii字元中編寫的資料或程式指令的檔案。廣義的二進位制檔案即為檔案,由檔案在外部儲存裝置的存放方式為二進位制而得名。狹義的二進位制檔案即指除文字檔案以外的檔案。簡單來說,文字檔案是基於字元編碼的檔案,常見的編碼有ascii編碼,unicode編...