开发者社区> 问答> 正文

手写二进制转 Base64(阿里)#前端面试

手写二进制转 Base64(阿里)#前端面试

展开
收起
一月19 2020-05-23 12:52:57 2294 0
1 条回答
写回答
取消 提交回答
  • 方法一:

    let encodedData = window.btoa("this is a example");
    console.log(encodedData); // dGhpcyBpcyBhIGV4YW1wbGU=
    
    let decodeData = window.atob(encodedData);
    console.log(decodeData); // this is a example
    

    方法二:

    j// 将二进制数据每 6bit 位替换成一个 base64 字符
    function binaryTobase64(code) {
      let base64Code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
      let res = '';
      // 1 bytes = 8bit,6bit 位替换成一个 base64 字符
      // 所以每 3 bytes 的数据,能成功替换成 4 个 base64 字符
        
      // 对不足 24 bit (也就是 3 bytes) 的情况进行特殊处理
      if (code.length % 24 === 8) {
        code += '0000';
        res += '=='
      }
      if (code.length % 24 === 16) {
        code += '00';
        res += '='
      }
    
      let encode = '';
      // code 按 6bit 一组,转换为
      for (let i = 0; i < code.length; i += 6) {
        let item = code.slice(i, i + 6);
        encode += base64Code[parseInt(item, 2)];
      }
      return encode + res;
    }```  
    
    
    2020-05-23 13:55:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Vue.js 在前端服务化上的探索与实践 立即下载
阿里文娱大前端技术实践 立即下载
前端代码是怎样智能生成的 立即下载