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

2021-07-09 17:40:00 字數 2906 閱讀 7823

廣義的二進位制檔案即指檔案,由檔案在

外部裝置的存放形式為二進位制而得名。狹義的二進位制檔案即除文字檔案以外的檔案。文字檔案是一種由很多行

字元構成的

計算機檔案。文字檔案存在於

計算機系統中,通常在文字檔案最後一行放置檔案結束標誌。文字檔案的

編碼基於字元定長,

解碼相對要容易一些;二進位制檔案

編碼是變長的,靈活利用率要高,而解碼要難一些,不同的二進位制檔案解碼方式是不同的。

從本質上來說他們之間沒有什麼區別,因為他們在

硬碟上都有一種的存放方式--二進位制,但是如果要對他們有些區分的話,那可以這樣理解。每個

字元由乙個或多個

位元組組成,每個位元組都是用的-128—127之間的部分數值來表示的,也就是說,-128——127之間還有一些資料沒有對應任何字元的任何位元組。如果乙個檔案中的每個

位元組的內容都是可以表示成

字元的資料,我們就可以稱這個檔案為文字檔案,可見,文字檔案只是二進位制檔案中的一種特例,為了與文字檔案相區別,人們又把除了文字檔案以外的檔案稱為二進位制檔案,由於很難嚴格區分文字檔案和二進位制檔案的概念,所以我們可以簡單地認為,如果乙個檔案專門用於儲存文字字元的資料,沒有包含字元以外的其他資料,我們就稱之為文字檔案,除此之外的檔案就是二進位制檔案。

為什麼要使用二進位制檔案。原因大概有三個:

第一是二進位制檔案比較節約空間,這兩者儲存字元型資料時並沒有差別。但是在儲存數字,特別是實型數字時,二進位制更節省空間,比如儲存 real*4 的資料:3.1415927,文字檔案需要 9 個位元組,分別儲存:3 . 1 4 1 5 9 2 7 這 9 個 ascii 值,而二進位制檔案只需要 4 個位元組(db 0f 49 40)

第二個原因是,記憶體中參加計算的資料都是用二進位制無格式儲存起來的,因此,使用二進位制儲存到檔案就更快捷。如果儲存為文字檔案,則需要乙個轉換的過程。在資料量很大的時候,兩者就會有明顯的速度差別了。

第三,就是一些比較精確的資料,使用二進位制儲存不會造成有效位的丟失。

一、文字檔案與二進位制檔案的定義

大家都知道計算機的儲存在物理上是二進位制的,所以文字檔案與二進位制檔案的區別並不是物理上的,而是邏輯上的。這兩者只是在編碼層次上有差異。簡單來說,文字檔案是基於字元編碼的檔案,常見的編碼有ascii編碼,unicode編碼等等。二進位制檔案是基於值編碼的檔案,你可以根據具體應用,指定某個值是什麼意思(這樣乙個過程,可以看作是自定義編碼。

從上面可以看出文字檔案基本上是定長編碼的(也有非定長的編碼如utf-8)。而二進位制檔案可看成是變長編碼的,因為是值編碼嘛,多少個位元代表乙個值,完全由你決定。大家可能對bmp檔案比較熟悉,就拿它舉例子吧,其頭部是較為固定長度的檔案頭資訊,前2位元組用來記錄檔案為bmp格式,接下來的8個位元組用來記錄檔案長度,再接下來的4位元組用來記錄bmp檔案頭的長度。

二、文字檔案與二進位制檔案的訪問

文字工具開啟乙個檔案的過程是怎樣的呢?拿記事本來說,它首先讀取檔案物理上所對應的二進位制位元流,然後按照你所選擇的解碼方式來解釋這個流,然後將解釋結果顯示出來。一般來說,你選取的解碼方式會是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"這四個控制符。

文字檔案的儲存與其讀取基本上是個逆過程。而二進位制檔案的訪問顯然與文字檔案的訪問差不多,只是編/解碼方式不同而已,也不再敘述。

三、文字檔案與二進位制檔案的優缺點

因為文字檔案與二進位制檔案的區別僅僅是編碼上不同,所以他們的優缺點就是編碼的優缺點,這個找本編碼的書來看看就比較清楚了。一般認為,文字檔案編碼基於字元定長,解碼容易些;二進位制檔案編碼是變長的,所以它靈活,儲存利用率要高些,解碼難一些(不同的二進位制檔案格式,有不同的解碼方式)。關於空間利用率,想想看,二進位制檔案甚至可以用乙個位元來代表乙個意思(位操作),而文字檔案任何乙個意思至少是乙個字元.

在windows下,文字檔案不一定是一ascii來存貯的,因為ascii碼只能表示128的標識,你開啟乙個txt文件,然後另存為,有個選項是編碼,可以選擇存貯格式,一般來說utf-8編碼格式相容性要好一些.而二進位製用的計算機原始語言,不存貯相容性. 很多書上還認為,文字檔案的可讀性要好些,儲存要花費轉換時間(讀寫要編譯碼),而二進位制檔案可讀性差,儲存不存在轉換時間(讀寫不要編譯碼,直接寫值).這裡的可讀性是從軟體使用者角度來說的,因為我們用通用的記事本工具就幾乎可以瀏覽所有文字檔案,所以說文字檔案可讀性好;而讀寫乙個具體的二進位制檔案需要乙個具體的檔案解碼器,所以說二進位制檔案可讀性差,比如讀bmp檔案,必須用讀圖軟體.

而這裡的儲存轉換時間應該是從程式設計的角度來說的,因為有些作業系統如windows需要對回車換行符進行轉換(將''\n'',換成''\r\n'',所以檔案讀寫時,作業系統需要乙個乙個字元的檢查當前字元是不是''\n''或''\r\n'').這個在儲存轉換在linux作業系統中並不需要,當然,當在兩個不同的作業系統上共享檔案時,這種儲存轉換又可能出來

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

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

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

from 從檔案編碼的方式來看,檔案可分為ascii碼檔案和二進位製碼檔案兩種。ascii檔案也稱為文字檔案,這種檔案在磁碟中存放時每個字元對應乙個位元組,用於存放對應的ascii碼。例如,數5678的儲存形式為 asc碼 00110101 00110110 00110111 00111000 十進...

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

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