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

    1、文本文件與二進制文件的定義
  你們都知道計算機的存儲在物理上是二進制的,因此文本文件與二進制文件的區別並非物理上的,而是邏輯上的。這二者只是在編碼層次上有差別。簡單來講,文本文件是基於字符編碼的文件,常見的編碼有ASCII編碼,UNICODE編碼等等。二進制文件是基於值編碼的文件,你能夠根據具體應用,指定某個值是什麼意思(這樣一個過程,能夠看做是自定義編碼。

  從上面能夠看出文本文件基本上是定長編碼的(也有非定長的編碼如UTF-8)。而二進制文件可當作是變長編碼的,由於是值編碼嘛,多少個比特表明一個值,徹底由你決定。你們可能對BMP文件比較熟悉,就拿它舉例子吧,其頭部是較爲固定長度的文件頭信息,前2字節用來記錄文件爲BMP格式,接下來的8個字節用來記錄文件長度,再接下來的4字節用來記錄bmp文件頭的長度。

  2、文本文件與二進制文件的存取
  文本工具打開一個文件的過程是怎樣的呢?拿記事原本說,它首先讀取文件物理上所對應的二進制比特流,而後按照你所選擇的解碼方式來解釋這個流,而後將解釋結果顯示出來。通常來講,你選取的解碼方式會是ASCII碼形式(ASCII碼的一個字符是8個比特),接下來,它8個比特8個比特意來解釋這個文件流。例如對於這麼一個文件流"01000000_01000001_01000010_01000011"(下劃線''_'',爲了加強可讀性手動添加的),第一個8比特''01000000''按ASCII碼來解碼的話,所對應的字符是字符''A'',同理其它3個8比特可分別解碼爲''BCD'',即這個文件流可解釋成「ABCD」,而後記事本就將這個「ABCD」顯示在屏幕上。

  事實上,世界上任何東西要與其餘東西通訊會話,都存在一個既定的協議,既定的編碼。人與人之間經過文字聯絡,漢字「媽」表明生你的那我的,這就是一種既定的編碼。但注意到這樣一種狀況,漢字「媽」在日本文字裏有多是你生下的那我的,因此當一箇中國人A與日本B之間用「媽」這個字進行交流,出現誤解就很正常的。用記事本打開二進制文件與上面的狀況相似。記事本不管打開什麼文件都按既定的字符編碼工做(如ASCII碼),因此當他打開二進制文件時,出現亂碼也是很必然的一件事情了,解碼和譯碼不對應嘛。例如文件流''00000000_00000000_00000000_00000001''可能在二進制文件中對應的是一個四字節的整數int 1,在記事本里解釋就變成了"NULL_NULL_NULL_SOH"這四個控制符。

  文本文件的存儲與其讀取基本上是個逆過程。而二進制文件的存取顯然與文本文件的存取差很少,只是編/解碼方式不一樣而已,也再也不敘述。

  3、文本文件與二進制文件的優缺點
  由於文本文件與二進制文件的區別僅僅是編碼上不一樣,因此他們的優缺點就是編碼的優缺點,這個找本編碼的書來看看就比較清楚了。通常認爲,文本文件編碼基於字符定長,譯碼容易些;二進制文件編碼是變長的,因此它靈活,存儲利用率要高些,譯碼難一些(不一樣的二進制文件格式,有不一樣的譯碼方式)。關於空間利用率,想一想看,二進制文件甚至能夠用一個比特來表明一個意思(位操做),而文本文件任何一個意思至少是一個字符。

  在windows下,文本文件不必定是一ASCII來存貯的,由於ASCII碼只能表示128的標識,你打開一個txt文檔,而後另存爲,有個選項是編碼,能夠選擇存貯格式,通常來講UTF-8編碼格式兼容性要好一些.而二進制用的計算機原始語言,不存貯兼容性. 不少書上還認爲,文本文件的可讀性要好些,存儲要花費轉換時間(讀寫要編譯碼),而二進制文件可讀性差,存儲不存在轉換時間(讀寫不要編解碼,直接寫值).這裏的可讀性是從軟件使用者角度來講的,由於咱們用通用的記事本工具就幾乎能夠瀏覽全部文本文件,因此說文本文件可讀性好;而讀寫一個具體的二進制文件須要一個具體的文件解碼器,因此說二進制文件可讀性差,好比讀BMP文件,必須用讀圖軟件。

  而這裏的存儲轉換時間應該是從編程的角度來講的,由於有些操做系統如windows須要對回車換行符進行轉換(將''\n'',換成''\r\n'',因此文件讀寫時,操做系統須要一個一個字符的檢查當前字符是否是''\n''或''\r\n'').這個在存儲轉換在Linux操做系統中並不須要,固然,當在兩個不一樣的操做系統上共享文件時,這種存儲轉換又可能出來。

4、二進制文件是計算機可以直接識別、運行的,而不適合與人來閱讀。文本文件適合於人閱讀,大部分文本文件不是可執行文件,可是像一些腳本語言編寫的文本文件,例如Windows的批處理文件、Linux的shell腳本是可以直接執行的,不過還須要解釋器。
補充:咱們對文本進行操做的話,讀取的數據都是字符串形式的,將數據寫入到文本中,須要事先將數據的類型轉變成字符串類型的。
相關文章
相關標籤/搜索