编码的底层原理

        屏幕是由像素点组成的,任何图像都是由形状、颜色、亮度构成,像素点的组成又是 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 啊多出的哪些空间需要存相对位置,颜色、行高、字号等属性(辅助编码),编码是核心,大字号与小字号之间有一套相应的算法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unicode编码是一种用于表示字符集的编码方式,它的底层原理如下: 1. Unicode码位 Unicode编码采用了固定长度的编码方式,即每个字符都被编码为一个固定长度的数字序列。Unicode码位指的是每个字符在Unicode编码中所对应的唯一数字值,也就是字符的标识符。 Unicode码位的范围非常广,包括从最早的Unicode 1.0版本中的少量字符到最新的Unicode版本中的所有字符。Unicode码位的表示方式为U+xxxx,其中xxxx表示一个4位的十六进制数,例如,字符'A'的Unicode码位是U+0041,字符'中'的Unicode码位是U+4E2D。 2. Unicode实现方式 Unicode编码的实现方式有多种,其中比较常用的是UTF-8、UTF-16和UTF-32。它们的主要区别在于编码方式和存储方式不同。 UTF-8编码是一种变长编码方式,它可以使用1~4个字节表示一个字符的码位,其中ASCII字符只需要1个字节表示,而其他字符则需要2~4个字节表示。UTF-8编码的最大优势是兼容ASCII字符集,使得对于纯英文文本的存储非常节省空间。 UTF-16编码是一种定长编码方式,它使用2个字节或4个字节表示一个字符的码位。UTF-16编码的缺点是不能兼容ASCII字符集,因此对于纯英文文本的存储空间相对较大。 UTF-32编码是一种定长编码方式,它使用4个字节表示一个字符的码位。UTF-32编码的优点是每个字符都可以用相同长度的字节序列表示,但是对于存储空间的浪费较大。 总之,Unicode编码底层原理是将每个字符的码位映射到一个固定长度的数字序列,不同的Unicode实现方式有不同的编码方式和存储方式,但它们的目标都是为了让不同语言和文化的人们能够在计算机上进行交流和信息交换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值