base64编码
base64编码表
组成:大些字母(26)+ 小写字母(26)+ 数字(10) + “+”(1) + “/”(1)
Base64编码说明
Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),
之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,需要用0填充。如果全部用0填充,输出字符使用’=’,如果部分填充,填充在后面,因此编码后输出的文本末尾可能会出现1或2个’=’。
btoa(str) //64位转码
binary to ascii
atob(enstr) // 64位解码
ascii to binary
base64编码实现
function getbcode(enstr) {
let charcodes = []
let encharcodes = [];
var A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
for(let str of enstr) {
let code = str.charCodeAt(0).toString(2);
code = code.padStart(8, '0');
charcodes.push(code);
}
strcharcodes = charcodes.join('');
if(strcharcodes.length % 24 != 0) {
let main = Math.floor(strcharcodes.length / 24);
strcharcodes = strcharcodes.padEnd((main + 1) * 24, '0');
}
for(let i=0, len = strcharcodes.length/6; i < len; i++) {
let start = i * 6;
let code = parseInt('00' + strcharcodes.substr(start, 6) , 2);
if(code == 0) {
encharcodes.push('=');
} else {
encharcodes.push(A[code]);
}
}
console.log(encharcodes.join(''));
}