关于javascript:汉字转base64的过程

在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适宜小图标转码

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理