base64原理及其实现

╰+攻爆jí腚メ 2022-05-26 05:28 319阅读 0赞

base64原理

*base是吧3个8位字节转成4个6位字节,然后在6位字节前面补两个零
*6位字节是0~63都是可见字符


用Buffer将一个汉字转成16进制

  1. var buf=new Buffer('珍');//e7 8f 8d

将16进制的转成10进制

  1. //把任意字符转成10进制
  2. console.log(parseInt("e7",16));//231
  3. console.log(parseInt("8f",16));//143
  4. console.log(parseInt("8d",16));//141

将10进制转成2进制

  1. //10进制转成任意进制
  2. console.log((231).toString(2));//11100111
  3. console.log((143).toString(2));//10001111
  4. console.log((141).toString(2));//10001101

按照base64的原理

  1. 11100111 10001111 10001101
  2. 变成
  3. 00111001 00111000 00111110 00001101

把二进制转成10进制

  1. //把二进制转成10进制
  2. console.log(parseInt("00111001",2));//57
  3. console.log(parseInt("00111000",2));//56
  4. console.log(parseInt("00111110",2));//62
  5. console.log(parseInt("00001101",2));//13

base64

  1. var str="ABCDEFGHIJKLMNOPQRSTUVWSYZ";
  2. str+=str.toLowerCase();
  3. str+='0123456789';
  4. str+='+/';

输出

  1. console.log(str[57],str[56],str[62],str[13]);//5 4 + N

这里写图片描述


封装

  1. function base64s(font) {
  2. var base = "ABCDEFGHIJKLMNOPQRSTUVWSYZ";
  3. base += base.toLowerCase();
  4. base += '0123456789';
  5. base += '+/';
  6. var result = [];
  7. var str = '';
  8. var buf = new Buffer(font);
  9. for(var i = 0; i < buf.length; i++) {
  10. str += buf[i].toString(2);
  11. }
  12. for(var j = 0; j < str.length / 6; j++) {
  13. result.push(str.slice(j * 6, (j + 1) * 6));
  14. }
  15. result.forEach(function(item, index) {
  16. result[index] = parseInt(item, 2);
  17. });
  18. return [base[result[0]], base[result[1]], base[result[2]], base[result[3]]].toString().replace(/,/g, " ");
  19. }

发表评论

表情:
评论列表 (有 0 条评论,319人围观)

还没有评论,来说两句吧...

相关阅读

    相关 base64及其隐写原理

    一、base64编码 base64就是一种基于64个可打印字符来表示二进制数据的表示方法,包含字符"A-Z、a-z、+、/"64个字符。编码表如下图: ![waterm

    相关 Base64编码原理

    遇到的问题:将昵称设置为表情符入库时出错,原因:数据库编码格式为utf-8. 解决方案: 1、将数据库编码格式改为utf8mb4;(该方法不太好,需要修改数据库编码格式)

    相关 Base64的编码原理

    这里可能需要借助一些在线工具,例如系统编码的AsciI码对照表,例如我的就是gb2312的,具体查看自己系统编码可以cmd下输入chcp得到一组数字后去编码对照表查找,还有就是