编码方式 / Base 64

一、基本信息

1、一种编码方式。

2、使用场景:

(1)某些老的路由器不支持 UTF-8,当中文字符的二进制流到路由器中时,路由器可能按照自己支持的编码方式,例如:ascii 码来解读,可能解析出不可见字符,例如:回车、tab。容易导致路由器异常从而传输失败。

(2)避免在 http 中传输二进制数据,因为不同的设备对二进制解读是不同的。同样,一些老的软件、网络协议也有类似的问题。

(3)网页请求中,若网页中存在图片,一般浏览器的操作是获取到基本的网页数据之后,再次进行请求获取里面图片的数据,这样就导致了网络请求频繁。为了解决这个问题,可以将网页中图片的二进制数据转成 Base 64 ,嵌入到 html 中,一次即可传至浏览器。

总之,Base64 编码可以将所有的二进制串转成可见的字符串,并且都落在 ascii 码表中可见字符中,几乎所有的系统都是支持 ascii 码的,故使用 Base 64 编码可以通过几乎所有的设备的传输。Base 64 相当于一个万能语言,各个生物(设备)都能看懂。

二、编码表

Base64 编码是通过 64 个字符来表示二进制数据,64 个字符表示二进制数据只能表示 6 位,所以他可以通过 4 个 Base64 的字符来表示 3 个字节,如下是 Base64 的字符编码表。

码值字符码值字符码值字符码值字符
0A16Q32g48w
1B17R33h49x
2C18S34i50y
3D19T35j51z
4E20U36k520
5F21V37i531
6G22W38m542
7H23X39n553
8I24Y40o564
9J25Z41p575
10K26a42q586
11L27b43r597
12M28c44s608
13N29d45t619
14O30e46u62+
15P31f47v63/

 三、编码过程

如要表示字符串“China” ,先将各个字符转换为二进制形式,也就是 01000011 01101000 01101001 01101110 01100001,先将字符串分成 2 组,每组 3 个字节,如下所示:

01000011 01101000 01101001 01101110 01100001                                   (1)

第一组蓝色以 6 bit 为单位从左向右进行分割,每小组 6 bit,左侧补充 2 个0,使之为一个字节,结果如下:

00010000  00110110  00100001  00101001

经过计算,该组的十进制值为 16.54.33.41,依照索引可以得出对应的 Base64 字符,为 Q.2.h.p。

同理可以得到第二组的分割结果为:

00011011  00100110  00000100

由于第三个小组本身不足 6 bit,故在小组右侧补充 2 个 0。经过计算,该组的十进制值为 27.38,依照索引可以得出对应的 Base64 字符,为 b.m.E。

由于上述(1)号串,第二组应该为 3 个字节,结果只有两个,故需要在 base 64 编码最后添加 1 个 =,缺几个字节就加几个 = ,由于每组最多 3 个字节,故顶过有 2 个 = 。

四、解码过程

解码过程就是把 4 个字节还原成 3 个字节再根据“=”数量不同最终还原出二进制

 

(SAW:Game Over!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值