关于javascript:汉字转base64的过程

29次阅读

共计 1107 个字符,预计需要花费 3 分钟才能阅读完成。

在 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. 把 3 8=24 位的二进制变成 4 6 的二进制
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 适宜小图标转码

正文完
 0