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

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

二進制文件和文本文件有什么區(qū)別?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#專欄作家#

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

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自PEXELS,基于CC0協(xié)議

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

    回復(fù)