文字檔案和二進位制檔案的區別

2021-06-10 01:58:16 字數 1591 閱讀 9952

from: 

從檔案編碼的方式來看,檔案可分為ascii碼檔案和二進位製碼檔案兩種。

ascii檔案也稱為文字檔案,這種檔案在磁碟中存放時每個字元對應乙個位元組,用於存放對應的ascii碼。例如,數5678的儲存形式為:

asc碼:  00110101 00110110 00110111 00111000

↓     ↓    ↓    ↓

十進位製碼: 5     6    7    8 共占用4個位元組。ascii碼檔案可在螢幕上按字元顯示, 例如源程式檔案就是ascii檔案,用dos命令type可顯示檔案的內容。 由於是按字元顯示,因此能讀懂檔案內容。

二進位制檔案是按二進位制的編碼方式來存放檔案的。 例如, 數5678的儲存形式為: 00010110 00101110只佔二個位元組。二進位制檔案雖然也可在螢幕上顯示, 但其內容無法讀懂。c系統在處理這些檔案時,並不區分型別,都看成是字元流,按位元組進行處理。 輸入輸出字元流的開始和結束只由程式控制而不受物理符號(如回車符)的控制。 因此也把這種檔案稱作「流式檔案」。

乙個檔案可以以文字模式或二進位制模式開啟,這兩種的區別是:在文字模式中回車被當成乙個字元'/n',而二進位制模式認為它是兩個字元0x0d,0x0a;如果在檔案中讀到0x1b,文字模式會認為這是檔案結束符,也就是二進位制模型不會對檔案進行處理,而文字方式會按一定的方式對資料作相應的轉換。

在使用c函式進行檔案的處理時,都把檔案看作二進位制檔案來處理,能減少不少不必要的麻煩·!

二進位制檔案,這個再基礎不過的名詞,正因為它的無處不在,或許沒有人會關注它背後隱含的內容。其實我也一樣,在寫下這些文字之前,我也是認為二進位制檔案就像空氣一樣,平常得讓人完全忽略了。

很偶然的,今天在寫**的時候使用了fopen函式:

file * fopen (const char * filename, const char * mode)

大家可以看到第二個引數是mode,而這個引數定義了檔案開啟的方式,w、a等都可以做為函式的實參。除此之外,還有兩個值:tb。這兩個值定義了檔案是按照文字(text)還是二進位制(binary)方式開發。正是這個兩個值引起了我對二進位制檔案的興趣,因為它們讓我想到了很多問題。

首先,出現在腦海的第乙個問題是:文字檔案和二進位制檔案有什麼區別呢?我想這個問題並不是每個程式設計師能夠馬上回答上來的,至少我是不行了。查閱了資料之後,發現答案就在自己的知識範圍之內的:將檔案看作是由乙個乙個位元組(byte) 組成的,那麼文字檔案中的每個位元組的最高位都是0,也就是說文字檔案使用了乙個位元組中的七位來表示所有的資訊,而二進位制檔案則是將位元組中的所有位都用上了。這就是兩者的區別;

接著,第二個問題就是檔案按照文字方式或者二進位制方式開啟,兩者會有什麼不同呢?其實不管是二進位制檔案也好,還是文字檔案也好,都是一連串的0和1,但是開啟方式不同,對於這些0和1的處理也就不同。如果按照文字方式開啟,在開啟的時候會進行translate,將每個位元組轉換成ascii碼,而以按照二進位制方式開啟的話,則不會進行任何的translate;

最後就是文字檔案和二進位制檔案在編輯的時候,使用的方式也是不同的。譬如,你在記事本中進行文字編輯的時候,你進行編輯的最小單位是位元組(byte);而對二進位制檔案進行編輯的話,最小單位則是位(bit),當然我們都不會直接通過手工的方式對二進位制檔案進行編輯了。

文字檔案和二進位制檔案的區別

一 文字檔案與二進位制檔案的定義 大家都知道計算機的儲存在物理上是二進位制的,所以文字檔案與二進位制檔案的區別並不是物理上的,而是 邏輯上的。這兩者只是在編碼層次上有差異。簡單來說,文字檔案是基於字元編碼的檔案,常見的編碼有ascii編碼,unicode編碼等等。二進位制檔案是 基於值編碼的檔案,你...

文字檔案和二進位制檔案的區別

二進位制檔案 英文 binary files 包含在 ascii 及擴充套件 ascii 字元中編寫的資料或程式指令的檔案。計算機檔案基本上分為二種 二進位制檔案和 ascii 也稱純文字 檔案,圖形檔案及文字處理程式等電腦程式都屬於二進位制檔案。這些檔案含有特殊的格式及計算機 ascii 則是可以...

文字檔案和二進位制檔案的區別

2006 03 11 19 24 7423人閱讀收藏 舉報 儲存 dos磁碟c 從檔案編碼的方式來看,檔案可分為ascii碼檔案和二進位製碼檔案兩種。ascii檔案也稱為文字檔案,這種檔案在磁碟中存放時每個字元對應乙個位元組,用於存放對應的ascii碼。例如,數5678的儲存形式為 asc碼 001...