網絡傳輸-文本文件和二進制文件的區別


1. 文本文件和二進制文件的定義

    # 計算機在物理內存上面存放的都是二進制,所以文本文件和二進制文件的主要區別是在邏輯上的而不是物理上的。而從文件的編碼方式來看,文件可以分為文本文件和二進制文件。文本文件是基於字符編碼的文件,常見的有ASCII、Unicode等,二進制文件是基於值編碼的文件,可以看成是變長編碼,你可以根據自己的需要,決定多少個比特代表一個值。

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

    # (1)ASCII文件也稱為文本文件,這種文件在磁盤中存放時每個字符對應一個字節,用於存放對應的ASCII碼。例如,數5678的存儲形式為:
    
    ASC碼:    00110101 00110110 00110111 00111000
             ↓      ↓     ↓     ↓     十進制碼: 5      6     7     8 共占用4個字節。ASCII碼文件可在屏幕上按字符顯示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可顯示文件的內容。 由於是按字符顯示,因此能讀懂文件內容。 
    # (2)二進制文件是按二進制的編碼方式來存放文件的。 例如, 數5678的存儲形式為: 00010110 00101110只占二個字節。二進制文件雖然也可在屏幕上顯示, 但其內容無法讀懂。C系統在處理這些文件時,並不區分類型,都看成是字符流,按字節進行處理。 輸入輸出字符流的開始和結束只由程序控制而不受物理符號(如回車符)的控制。 因此也把這種文件稱作“流式文件”。

2. 文本文件和二進制文件的存儲

# 2.1 存儲的方式不同

    # 二進制文件就是把內存中的數據按其在內存中存儲的形式原樣輸出到磁盤中存放,即存放的是數據的原形式。
    # 文本文件是把數據的終端形式的二進制數據輸出到磁盤上存放,即存放的是數據的終端形式

# 2.2在實際存儲中最好是將數據分成字符數據和非字符數據兩類:

    # (1)如果存儲的是字符數據,無論采用文本文件還是二進制文件都是沒有任何區別的,所以討論使用文本文件還是二進制文件是沒有意義的。
    # (2)如果存儲的是非字符數據,又要看我們使用的情況來決定:

        # a:如果是需要頻繁的保存和訪問數據,那么應該采取二進制文件進行存放,這樣可以節省存儲空間和轉換時間。
        # b:如果需要頻繁的向終端顯示數據或從終端讀入數據,那么應該采用文本文件進行存放,這樣可以節省轉換時間。

3. 文本文件的打開方式和二進制文件打開方式的區別

    # (1)文本模式中回車被當成一個字符'\n',在文件中如果讀到0x1B,文本模式會認為這是文件結束符,會按照一定方式對數據做相應的轉換。

    # (2)二進制模式中'\n'會被認為是兩個字符0x0D,0x0A;在讀到0x1B時,二進制模式不會對文件進行處理。

 2.只讀/寫模式的r/w和rb/wb

# (1)r:讀取到的是文本數據(字符的編碼),使用 open() 打開文件時,默認采用 GBK 編碼。但當要打開的文件不是 GBK 編碼格式時,可以在使用 open() 函數時,手動指定打開文件的編碼格式,例如:file = open("a.txt",encoding="utf-8")

# (2)rb: 讀取到的是二進制數據(字符在硬盤中存儲的二進制),不需要指定編碼.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM