程序員別唬我系列之:二進制文件

2 評論 14654 瀏覽 7 收藏 6 分鐘

二進制文件和文本文件有什么區別?

程序員經常說:“哥,你也別用明文寫文件啊,至少也要寫成二進制文件啊”。

程序員經常說:“哥,這篇文章數字居多,不要寫成文本文件哦,好占空間啊”。

程序員經常說:“哥,你是不明白文本文件和二進制文件的區別吧 :—)”。

帶著這些常見的問題,果果帶你走進科學,看看文本文件和二進制文件的本質區別以及使用場景。

計算機中的文本文件就指的是你常見到的txt,記事本文件這種,在windows中打開,你是直接可閱讀,并可解釋其含義的。

而二進制文件通常你用文本打開工具是不能打開的,我們用記事本強行打開,也是一團亂碼,下圖應該是你常見的,不信你用NotePad等工具打開一張圖片看看。

其實,從廣義的存儲的角度看,計算機中本沒有什么文本文件和二進制文件的區別,在計算機的硬盤上存儲的文件都是以二進制存儲的,也就是01的串。

那為什么程序員口中又要分這兩種類型呢?區別何在呢?

其實是從狹義的角度劃分,我們還是舉栗子進行說明:

圓周率π=3.1415926 ,如果按照文本文件存儲(在桌面上新建一個txt,然后輸入3.1415926,然后保存),這個文件就被存儲為一個文本文件,其中一共9個字符,分別是3、.、1、4、1、5、9、2、6,這幾個數字分別按照其對應的ASCII碼為十進制的63,56,61,64,61,65,71,62,66,每個字符占用一個字節,所以一共占用了9個字節的空間。

如果按照二進制文件存儲,那3.1415926是一個浮點數,那最終占用4個字節存儲。

可以明顯的推導出一個結論:二進制文件在數字上存儲要比文本文件省空間,也就是文本文件是按照字符存儲,二進制文件按照數據類型存儲。

文本文件最終存儲的也是二進制文件,只不過每一個字節都是可以轉換為相應的字符的,因為要保障其可以還原,而二進制文件根本不關心存儲的是什么,就像吃火鍋往火鍋里面下菜的時候,文本文件像個大家閨秀一樣,還要區分蔬菜放在不辣的里面,肉放在辣鍋里面一樣,效率當然低,而二進制文件不管三七二十一,不按任何規則,只要保證菜品入鍋就好了。

就像程序員說的,文本文件打開就是明文,而二進制文件是不定長的,而且存儲的是時候,你不知道寫入的程序員是按照什么規則寫入的,所以會增加一點破解難度。

總結起來,二進制文件更省空間,寫入速度更快,因為可讀性很差,所以還有一定的加密保護作用。

因為從存儲的角度,本來一切公平,大家都是二進制存儲的。但是因為人要讀文件,所以文本文件委屈求全,作為二進制文件的子集,文本文件開辟了一個新的文件品類,這種品類下,文件的每個字符都是經過了特殊處理(比如轉成ASCII碼)然后再存儲為二進制,這樣的二進制因為可以直接對應為ASCII碼,所以可供人們閱讀。

在程序設計中,經常利用文件流進行二進制文件的讀寫,程序員會經常跟二進制文件打交道,而且二進制文件的格式經常是程序員自定義的,希望后面你聽到這個詞的時候,不要太陌生,只把它當作一個普通文件即可。

#專欄作家#

給產品經理講技術,微信公眾號(pm_teacher),人人都是產品經理專欄作家。資深程序猿,專注客戶端開發若干年,對前端、后臺技術略懂,熱衷于對新的科技領域的探索。

本文原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自PEXELS,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 哥,我咋沒看懂呢??,有沒有形象點的類比,那文本文件怎么變成二進制文件給程序員啊。

    回復