日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二进制文件和普通文件(文本文件)区别

發布時間:2025/3/17 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二进制文件和普通文件(文本文件)区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

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操作系統中并不需要,當然,當在兩個不同的操作系統上共享文件時,這種存儲轉換又可能出來



轉載于:https://my.oschina.net/uabao/blog/503605

總結

以上是生活随笔為你收集整理的二进制文件和普通文件(文本文件)区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。