base64原理及其实现
程序员文章站
2022-03-30 21:12:54
...
base64原理
*base是吧3个8位字节转成4个6位字节,然后在6位字节前面补两个零
*6位字节是0~63都是可见字符
用Buffer将一个汉字转成16进制
var buf=new Buffer('珍');//e7 8f 8d
将16进制的转成10进制
//把任意字符转成10进制
console.log(parseInt("e7",16));//231
console.log(parseInt("8f",16));//143
console.log(parseInt("8d",16));//141
将10进制转成2进制
//10进制转成任意进制
console.log((231).toString(2));//11100111
console.log((143).toString(2));//10001111
console.log((141).toString(2));//10001101
按照base64的原理
11100111 10001111 10001101
变成
00111001 00111000 00111110 00001101
把二进制转成10进制
//把二进制转成10进制
console.log(parseInt("00111001",2));//57
console.log(parseInt("00111000",2));//56
console.log(parseInt("00111110",2));//62
console.log(parseInt("00001101",2));//13
base64
var str="ABCDEFGHIJKLMNOPQRSTUVWSYZ";
str+=str.toLowerCase();
str+='0123456789';
str+='+/';
输出
console.log(str[57],str[56],str[62],str[13]);//5 4 + N
封装
function base64s(font) {
var base = "ABCDEFGHIJKLMNOPQRSTUVWSYZ";
base += base.toLowerCase();
base += '0123456789';
base += '+/';
var result = [];
var str = '';
var buf = new Buffer(font);
for(var i = 0; i < buf.length; i++) {
str += buf[i].toString(2);
}
for(var j = 0; j < str.length / 6; j++) {
result.push(str.slice(j * 6, (j + 1) * 6));
}
result.forEach(function(item, index) {
result[index] = parseInt(item, 2);
});
return [base[result[0]], base[result[1]], base[result[2]], base[result[3]]].toString().replace(/,/g, " ");
}
上一篇: cpp中的多态及其实现原理自述
下一篇: 【Android开发】高级组件-进度条