写点什么

编码的底层原理

作者:Geek_10c5db
  • 2022 年 4 月 29 日
  • 本文字数:1087 字

    阅读完需:约 4 分钟

屏幕是由像素点组成的,任何图像都是由形状、颜色、亮度构成,像素点的组成又是 x、y 的坐标,三原色数值比值,亮度(234,234,10,20,30),三原色取值范围 0~255,byte 存就可以了,总共一个像素点信息需要 16+16+8+8+8 = 56 bit。假设一个字需要 200 像素,那么这个就会占 200*56 bit 的大小,不仅记录了大小,还记录了形状(因为里面有 x,y 坐标)。

而像汉字有那么多,几十万啥的,需要的空间也就越大,为了节省空间并且提高性能,给每一个汉字提供一个代号(如 110101010),然后通过这个代号就可以找到这个汉字,这个代号就是编码。码点是就是指以某个字符的编码,代码单元就是存储单位,向字节一样。

char x = "#",就像 #本身就是一个形状,那么在计算机里真正存的 x 的值其实就是编码,在屏幕上看到的就是形状了。

根据编码我们可以引出两个面试考察的原理:

1.记事本原理:①首先有一个编码库,每一个编码对应的字符和形状有相应的库。记事本文件存的都是二进制数据,前面固定多少位表示的是编码,存取文件时先指定编码,然后在根据编码一个一个往里面存。②记事本提前有预存编码,形状和编码比特对应的库,当我们要写东西的时候,计算机会记录我们写入东西对应的编码,当我们要显示内容的时候,(有个头部,用来辨别编码格式,之后进行定长读取)它会每次读取一定比特的内容,匹配库里的形状,最终显示在记事本上。

其实我感觉①要比②好理解。如果支持相同编码,那么对方就能互相打开对方的文件(不局限于文本文件,pdf,jpg 只要编码相同都可)。

像笔记本这样的都是黑色的,不需要带三原色,(消耗 32bit 存储数据,只需要记录 x、y 的坐标),屏幕默认黑色。

像 word 文档,PPT 啊里面不同字体的,一个字体就代表一个编码,他们所采用的是特殊的编码,如果用记事本打开的话,会出现乱码(记事本无字体区别)。

WPS 不一定能打开 word 的全部文档,因为 WPS 是 word 的阉割版,基本都是中文字体,而 word 的中文字体也就来个,英文字体比较多,WPS 并不具备那些编码。

2.编辑器的核心原理:先定义好形状库,在定义编码,存的时候按照编码存,读的时候按照编码,读完之后去形状库匹配,然后展示到屏幕上。编辑器的本质第一就是排列形状,二是排列形状对应的编码,然后按照编码存成文件,打开的时候按照编码投到屏幕。

空格也是编码;图片没有编码,纯像素组成的,编码是为了重复利用,而图片不一定重复利用。文件的核心就是编码。

一般 PPT 并没有存多少字,就占很大的空间,因为不跟记事本一样,记事本只存编码,而 ppt/word 啊多出的哪些空间需要存相对位置,颜色、行高、字号等属性(辅助编码),编码是核心,大字号与小字号之间有一套相应的算法。

发布于: 刚刚阅读数: 3
用户头像

Geek_10c5db

关注

还未添加个人签名 2022.04.22 加入

授人以鱼不如授人以渔

评论

发布
暂无评论
编码的底层原理_java面试_Geek_10c5db_InfoQ写作社区