你知道base64编码解码吗


Base64编码之所以称为Base64,是因为其使用64个字符来对任意数据进行编码,同理有Base32、Base16编码。

通俗来说,所谓base64就是基于ASCII码的64个可见字符子集的一种编码方式。

Base64编码解码有分组,替换,结尾处理三种方式要点。

对于解码,其实就是编码的逆过程:将得到的base64编码信息分为4字节一组,由4个字符值反推出其索引,然后将四个索引的低6bit共24bit拼接成完整的三个字节,得到24bit数据流(可能还需要一步:将3个字节的ASCII字符再算出来)。

需要注意的是在编程时,由于逆向解码,对于已知字符求其索引,需要进行整个表的遍历,若需要解密的数据较大,则其效率是相当低的。因此我们可以做一个逆向索引的表,该表以64个字符的ASCII作为索引index,而以正向索引表的索引作为逆向索引表的值。

在表示图片时,通常会使用base64编码。比如网页中的小图片,使用baase64编码后以文本形式直接嵌入 html 文件中,可以有效减少加载网页时的网络请求。

但base64的广泛使用,也带了一些不好的影响:一些前端框架中,默认将图片、甚至是所有类型的文件都转换成了base64字符串。由于base64编码效率的问题,尤其在传输大文件的时候,导致网络请求的数据量大大增加。还减少了刚入门、水平较差的前端工程师们接触完整网络协议的机会,只会用字符串调接口,不了解http协议中传输文件、二进制数据的部分。