程序員別唬我系列之:二進(jìn)制文件

二進(jìn)制文件和文本文件有什么區(qū)別?
程序員經(jīng)常說:“哥,你也別用明文寫文件啊,至少也要寫成二進(jìn)制文件啊”。
程序員經(jīng)常說:“哥,這篇文章數(shù)字居多,不要寫成文本文件哦,好占空間啊”。
程序員經(jīng)常說:“哥,你是不明白文本文件和二進(jìn)制文件的區(qū)別吧 :—)”。
帶著這些常見的問題,果果帶你走進(jìn)科學(xué),看看文本文件和二進(jìn)制文件的本質(zhì)區(qū)別以及使用場(chǎng)景。
計(jì)算機(jī)中的文本文件就指的是你常見到的txt,記事本文件這種,在windows中打開,你是直接可閱讀,并可解釋其含義的。
而二進(jìn)制文件通常你用文本打開工具是不能打開的,我們用記事本強(qiáng)行打開,也是一團(tuán)亂碼,下圖應(yīng)該是你常見的,不信你用NotePad等工具打開一張圖片看看。
其實(shí),從廣義的存儲(chǔ)的角度看,計(jì)算機(jī)中本沒有什么文本文件和二進(jìn)制文件的區(qū)別,在計(jì)算機(jī)的硬盤上存儲(chǔ)的文件都是以二進(jìn)制存儲(chǔ)的,也就是01的串。
那為什么程序員口中又要分這兩種類型呢?區(qū)別何在呢?
其實(shí)是從狹義的角度劃分,我們還是舉栗子進(jìn)行說明:
圓周率π=3.1415926 ,如果按照文本文件存儲(chǔ)(在桌面上新建一個(gè)txt,然后輸入3.1415926,然后保存),這個(gè)文件就被存儲(chǔ)為一個(gè)文本文件,其中一共9個(gè)字符,分別是3、.、1、4、1、5、9、2、6,這幾個(gè)數(shù)字分別按照其對(duì)應(yīng)的ASCII碼為十進(jìn)制的63,56,61,64,61,65,71,62,66,每個(gè)字符占用一個(gè)字節(jié),所以一共占用了9個(gè)字節(jié)的空間。
如果按照二進(jìn)制文件存儲(chǔ),那3.1415926是一個(gè)浮點(diǎn)數(shù),那最終占用4個(gè)字節(jié)存儲(chǔ)。
可以明顯的推導(dǎo)出一個(gè)結(jié)論:二進(jìn)制文件在數(shù)字上存儲(chǔ)要比文本文件省空間,也就是文本文件是按照字符存儲(chǔ),二進(jìn)制文件按照數(shù)據(jù)類型存儲(chǔ)。
文本文件最終存儲(chǔ)的也是二進(jìn)制文件,只不過每一個(gè)字節(jié)都是可以轉(zhuǎn)換為相應(yīng)的字符的,因?yàn)橐U掀淇梢赃€原,而二進(jìn)制文件根本不關(guān)心存儲(chǔ)的是什么,就像吃火鍋往火鍋里面下菜的時(shí)候,文本文件像個(gè)大家閨秀一樣,還要區(qū)分蔬菜放在不辣的里面,肉放在辣鍋里面一樣,效率當(dāng)然低,而二進(jìn)制文件不管三七二十一,不按任何規(guī)則,只要保證菜品入鍋就好了。
就像程序員說的,文本文件打開就是明文,而二進(jìn)制文件是不定長的,而且存儲(chǔ)的是時(shí)候,你不知道寫入的程序員是按照什么規(guī)則寫入的,所以會(huì)增加一點(diǎn)破解難度。
總結(jié)起來,二進(jìn)制文件更省空間,寫入速度更快,因?yàn)榭勺x性很差,所以還有一定的加密保護(hù)作用。
因?yàn)閺拇鎯?chǔ)的角度,本來一切公平,大家都是二進(jìn)制存儲(chǔ)的。但是因?yàn)槿艘x文件,所以文本文件委屈求全,作為二進(jìn)制文件的子集,文本文件開辟了一個(gè)新的文件品類,這種品類下,文件的每個(gè)字符都是經(jīng)過了特殊處理(比如轉(zhuǎn)成ASCII碼)然后再存儲(chǔ)為二進(jìn)制,這樣的二進(jìn)制因?yàn)榭梢灾苯訉?duì)應(yīng)為ASCII碼,所以可供人們閱讀。
在程序設(shè)計(jì)中,經(jīng)常利用文件流進(jìn)行二進(jìn)制文件的讀寫,程序員會(huì)經(jīng)常跟二進(jìn)制文件打交道,而且二進(jìn)制文件的格式經(jīng)常是程序員自定義的,希望后面你聽到這個(gè)詞的時(shí)候,不要太陌生,只把它當(dāng)作一個(gè)普通文件即可。
#專欄作家#
給產(chǎn)品經(jīng)理講技術(shù),微信公眾號(hào)(pm_teacher),人人都是產(chǎn)品經(jīng)理專欄作家。資深程序猿,專注客戶端開發(fā)若干年,對(duì)前端、后臺(tái)技術(shù)略懂,熱衷于對(duì)新的科技領(lǐng)域的探索。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自PEXELS,基于CC0協(xié)議
哥,我咋沒看懂呢??,有沒有形象點(diǎn)的類比,那文本文件怎么變成二進(jìn)制文件給程序員啊。