二进制文件和文本文件的区别
文本文件與二進制文件的定義
文本文件:是基于字符編碼的文件,常見的編碼有ASCII編碼,UNICODE編碼等等。
二進制文件:是基于值編碼的文件,你可以根據具體應用,指定某個值是什么意思(這樣一個過程,可以看作是自定義編碼。
從上面可以看出文本文件基本上是定長編碼的(也有非定長的編碼如UTF-8)。而二進制文件可看成是變長編碼的,因為是值編碼嘛,多少個比特代表一個值,完全由你決定。大家可能對BMP文件比較熟悉,就拿它舉例子吧,其頭部是較為固定長度的文件頭信息,前2字節用來記錄文件為BMP格式,接下來的8個字節用來記錄文件長度,再接下來的4字節用來記錄bmp文件頭的長度。
文本文件與二進制文件的存取
1、二進制文件是把內存中的數據按其在內存中的存儲形式原樣輸出到磁盤上存放,也就是說存放的是數據的原形式。
2、文本文件是把數據的終端形式的二進制數據輸出到磁盤上存放,也就是說存放的是數據的終端形式。
我們有必要把需要存儲的數據分為字符數據和非字符數據兩類。當你有數據要存儲的時候.首先要考慮的問題并不是你要選擇用二進制文件還是文本文件來進行存儲,而是首先得考慮你要存儲的數據是字符數據還是非字符數據.在此基礎上再討論應該選擇用什么文件進行存儲為好。
一、如果要存儲字符數據,無論是放在文本文件還是放在二進制文件中都和內存中的數據形式是沒有區別的.同樣也和終端形式沒有區別。那么在存儲和顯示的特性上也沒有任何區別,不浪費存儲空間也不浪費轉換時間。所以如果一個文件只存放字符數據,那么討論該文件是用文本文件或是二進制文件是沒有任何意義的。
二、如果要存儲非字符數據,則情況要復雜一些。
1、如果您需要頻繁地保存和訪問數據.那么應該采用二進制文件進行存放,這樣可以節省存儲空間和轉換時間。
2、如果您需要頻繁地向終端顯示數據或從終端讀人數據,那么應該采用文本文件進行存放,這樣可以節省轉換時間。
三、如果要存儲的數據中既有字符數據又有非字符數據那么要怎么辦呢?那就要綜合上述兩點進行權衡以找到最佳平衡點了
總結:字符數據本身在內存中就經過了編碼,所以無論是二進制還是文本形式都是一樣的,而對于非字符數據來說,例如inti=10;如果用二進制來進行存儲的話為1010,但是如果需要用文本形式來進行存儲的話就必須進行格式化編碼(對1和0分別編碼,即形式為‘1’和‘0’分別對應的碼值)。
文本文件與二進制文件的優缺點
因為文本文件與二進制文件的區別僅僅是編碼上不同,所以他們的優缺點就是編碼的優缺點,這個找本編碼的書來看看就比較清楚了。一般認為,文本文件編碼基于字符定長,譯碼容易些;二進制文件編碼是變長的,所以它靈活,存儲利用率要高些,譯碼難一些(不同的二進制文件格式,有不同的譯碼方式)。關于空間利用率,想想看,二進制文件甚至可以用一個比特來代表一個意思(位操作),而文本文件任何一個意思至少是一個字符.
在windows下,文本文件不一定是以ASCII來存貯的,因為ASCII碼只能表示128的標識,你打開一個txt文檔,然后另存為,有個選項是編碼,可以選擇存貯格式,一般來說UTF-8編碼格式兼容性要好一些.而二進制用的計算機原始語言,不存貯兼容性. 很多書上還認為,文本文件的可讀性要好些,存儲要花費轉換時間(讀寫要編譯碼),而二進制文件可讀性差,存儲不存在轉換時間(讀寫不要編解碼,直接寫值).這里的可讀性是從軟件使用者角度來說的,因為我們用通用的記事本工具就幾乎可以瀏覽所有文本文件,所以說文本文件可讀性好;而讀寫一個具體的二進制文件需要一個具體的文件解碼器,所以說二進制文件可讀性差,比如讀BMP文件,必須用讀圖軟件.
而這里的存儲轉換時間應該是從編程的角度來說的,因為有些操作系統如windows需要對回車換行符進行轉換(將”\n”,換成”\r\n”,所以文件讀寫時,操作系統需要一個一個字符的檢查當前字符是不是”\n”或”\r\n”).這個在存儲轉換在Linux操作系統中并不需要,當然,當在兩個不同的操作系統上共享文件時,這種存儲轉換又可能出來。
從存儲方式來說,文件在磁盤上的存儲方式都是二進制形式,所以,文本文件其實也應該算二進制文件。那么他們的區別呢,各自的優缺點呢?不急,我慢慢道來。
二進制文件讀寫和文本文件讀寫的區別
先從他們的區別來說,雖然都是二進制文件,但是二進制代表的意思不一樣。打個比方,一個人,我們可以叫他的大名,可以叫他的小名,但其實都是代表這個人。
二進制讀寫是將內存里面的數據直接讀寫入文本中,而文本呢,則是將數據先轉換成了字符串,再寫入到文本中。
下面我用個例子來說明:
我們定義了一個結構體,表示一個學生信息,我們打算把學生的信息分別用二進制和文本的方式寫入到文件中。
我們定義兩個方法,分別表示內存寫入和文本寫入
//使用二進制寫入
總結
以上是生活随笔為你收集整理的二进制文件和文本文件的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 主机箱前置耳机插孔没有声音的解决方案
- 下一篇: android车载导航测试,大众全系车载