在UTF8编码中一个字符占用一个字节 一个汉字占用3个字节。
11111111 11111111 11111111

Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的后面补两个0,造成8位一个字节的模式。 如果剩下的字符有余3个字节,则用0填充,输入字符应用'=',因而编码后输入的文本开端可能会呈现1或2个'='。

为了保障所输入的编码位可读字符,Base64制订了一个编码表,以便进行对立转换。编码表的大小为2^6=64,这也是Base64名称的由来。

通过本工具能够对代码进行Base64加密或者解密。Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。

把一个汉字转化成base64编码的过程:
1.把汉字转化成16进制
2.把16进制转化成2进制
3.把38=24位的二进制变成 46的二进制
4.把2进制转化成10进制
5.依据Base64编码表转化成base64编码

let buffer = Buffer.from('冯'); //将字符串转化成16进制console.log(buffer); //e5 86 af// 把16进制转化成2进制console.log((0xe5).toString(2));console.log((0x86).toString(2));console.log((0xaf).toString(2));// 11100101 10000110 10101111    这个是3*8的模式   咱们把这个模式转化成4*6的模式// 111001  011000 011010  101111  4*6模式  且最大不会超过64// 把二进制变成10进制console.log(parseInt('111001', 2));console.log(parseInt('011000', 2));console.log(parseInt('011010', 2));console.log(parseInt('101111', 2));// 57  24  26 47// Base64编码表 let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; str += str.toLowerCase(); str += '0123456789'; str += '+/'; console.log(str[57]+str[24]+str[26]+str[47]);  //5Yav /**  * 5Yav就是汉字冯的base64编码,不具备加密性,然而咱们能够看到原来的汉字是3字节当初5Yav变成了4个字节    所以base64适宜小图标转码  */

总结:
1.base64 没有加密性能,它只是编码转化base64 。
2.base64适宜小图标转码