base64原理及其实现

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, " ");
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值