文本文件與二進制文件的區別

從文件編碼的方式來看,文件可分爲ASCII碼文件和二進制碼文件兩種。

  ASCII文件也稱爲文本文件,這種文件在磁盤中存放時每個字符對應一個字節,用於存放對應的ASCII碼。例如,數5678的存儲形式爲:
ASC碼:  00110101 00110110 00110111 00111000
     ↓     ↓    ↓    ↓
十進制碼: 5     6    7    8 共佔用4個字節。ASCII碼文件可在屏幕上按字符顯示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可顯示文件的內容。 由於是按字符顯示,因此能讀懂文件內容。

  二進制文件是按二進制的編碼方式來存放文件的。 例如, 數5678的存儲形式爲: 00010110 00101110只佔二個字節。二進制文件雖然也可在屏幕上顯示, 但其內容無法讀懂。。

1、能存儲的數據類型不同
文本文件只能存儲char型字符變量。
二進制文件可以存儲char/int/short/long/float/……各種變量值。

2、每條數據的長度
文本文件每條數據通常是固定長度的。以ASCII爲例,每條數據(每個字符)都是1個字節。
二進制文件每條數據不固定。如short佔兩個字節,int佔四個字節,float佔8個字節……

3、讀取的軟件不同
文本文件編輯器就可以讀寫。比如記事本、NotePad++、Vim等。
二進制文件需要特別的解碼器。比如bmp文件需要圖像查看器,rmvb需要播放器……

4、操作系統對換行符(‘\n’)的處理不同(不重要)
文本文件,操作系統會對’\n’進行一些隱式變換,因此文本文件直接跨平臺使用會出問題:

在Windows下,寫入’\n’時,操作系統會隱式的將’\n’轉換爲”\r\n”,再寫入到文件中;讀的時候,會把“\r\n”隱式轉化爲’\n’,再讀到變量中。
在Linux下,寫入’\n’時,操作系統不做隱式變換。

二進制文件,操作系統不會對’\n’進行隱式變換,很多二進制文件(如電影、圖片等)可以跨平臺使用。

發佈了32 篇原創文章 · 獲贊 30 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章