Base64 就是将字符串变成 以 A~Z a~z 1234567890 +/ 共64个字符 进行编码
1. 将需要编码的字符串变成二进制
- 1个字符 = 1个字节 = 8位二进制数 而 2的6次方= 64 对应64个字符
2. 按每6位截取上一步中获取的二进制字符串 末尾不足6位的补0
3. 返回对应的base64编码
实现代码
function getBase64Code(){
const AZ = new Array(26).fill(65).map((item, index) => {
return String.fromCodePoint(item + index);
}).join('');
const az = new Array(26).fill(97).map((item, index) => {
return String.fromCodePoint(item + index);
}).join('');
return AZ + az + '0123456789+/';
}
function toBase64(str = '') {
let base64Code = getBase64Code();
let enCode = '';
let buWeiDengHao = '';
let code = str.split('').reduce((prev, cur) => {
let oneWord = cur.charCodeAt().toString(2);
oneWord = oneWord.padStart(8, '0');
return prev + oneWord;
}, '');
let item = '';
for(let i = 0; i < code.length; i += 6){
item = code.slice(i, i + 6);
if(item.length < 6){
if(item.length === 2){
item += '0000';
buWeiDengHao += '==';
}
if(item.length === 4){
item += '00';
buWeiDengHao += '=';
}
}
enCode += base64Code[parseInt(item, 2)];
}
return enCode + buWeiDengHao;
}
console.log(toBase64('ajksldjslfdg8490568945806()'));