程序员别唬我系列之:二进制文件
二进制文件和文本文件有什么区别?
程序员经常说:“哥,你也别用明文写文件啊,至少也要写成二进制文件啊”。
程序员经常说:“哥,这篇文章数字居多,不要写成文本文件哦,好占空间啊”。
程序员经常说:“哥,你是不明白文本文件和二进制文件的区别吧 :—)”。
带着这些常见的问题,果果带你走进科学,看看文本文件和二进制文件的本质区别以及使用场景。
计算机中的文本文件就指的是你常见到的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协议
哥,我咋没看懂呢🤔,有没有形象点的类比,那文本文件怎么变成二进制文件给程序员啊。