zoukankan      html  css  js  c++  java
  • 小程序中封装base64

      1 function Base64() {
      2 
      3   // private property  
      4   var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
      5 
      6   // public method for encoding  
      7   this.encode = function (input) {
      8     var output = "";
      9     var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
     10     var i = 0;
     11     input = _utf8_encode(input);
     12     while (i < input.length) {
     13       chr1 = input.charCodeAt(i++);
     14       chr2 = input.charCodeAt(i++);
     15       chr3 = input.charCodeAt(i++);
     16       enc1 = chr1 >> 2;
     17       enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
     18       enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
     19       enc4 = chr3 & 63;
     20       if (isNaN(chr2)) {
     21         enc3 = enc4 = 64;
     22       } else if (isNaN(chr3)) {
     23         enc4 = 64;
     24       }
     25       output = output +
     26         _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
     27         _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
     28     }
     29     return output;
     30   }
     31 
     32   // public method for decoding  
     33   this.decode = function (input) {
     34     var output = "";
     35     var chr1, chr2, chr3;
     36     var enc1, enc2, enc3, enc4;
     37     var i = 0;
     38     input = input.replace(/[^A-Za-z0-9+/=]/g, "");
     39     while (i < input.length) {
     40       enc1 = _keyStr.indexOf(input.charAt(i++));
     41       enc2 = _keyStr.indexOf(input.charAt(i++));
     42       enc3 = _keyStr.indexOf(input.charAt(i++));
     43       enc4 = _keyStr.indexOf(input.charAt(i++));
     44       chr1 = (enc1 << 2) | (enc2 >> 4);
     45       chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
     46       chr3 = ((enc3 & 3) << 6) | enc4;
     47       output = output + String.fromCharCode(chr1);
     48       if (enc3 != 64) {
     49         output = output + String.fromCharCode(chr2);
     50       }
     51       if (enc4 != 64) {
     52         output = output + String.fromCharCode(chr3);
     53       }
     54     }
     55     output = _utf8_decode(output);
     56     return output;
     57   }
     58 
     59   // private method for UTF-8 encoding  
     60   var _utf8_encode = function (string) {
     61     string = string.replace(/
    /g, "
    ");
     62     var utftext = "";
     63     for (var n = 0; n < string.length; n++) {
     64       var c = string.charCodeAt(n);
     65       if (c < 128) {
     66         utftext += String.fromCharCode(c);
     67       } else if ((c > 127) && (c < 2048)) {
     68         utftext += String.fromCharCode((c >> 6) | 192);
     69         utftext += String.fromCharCode((c & 63) | 128);
     70       } else {
     71         utftext += String.fromCharCode((c >> 12) | 224);
     72         utftext += String.fromCharCode(((c >> 6) & 63) | 128);
     73         utftext += String.fromCharCode((c & 63) | 128);
     74       }
     75 
     76     }
     77     return utftext;
     78   }
     79 
     80   // private method for UTF-8 decoding  
     81   var _utf8_decode = function (utftext) {
     82     var string = "";
     83     var i = 0;
     84     var c = c1 = c2 = 0;
     85     while (i < utftext.length) {
     86       c = utftext.charCodeAt(i);
     87       if (c < 128) {
     88         string += String.fromCharCode(c);
     89         i++;
     90       } else if ((c > 191) && (c < 224)) {
     91         c2 = utftext.charCodeAt(i + 1);
     92         string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
     93         i += 2;
     94       } else {
     95         c2 = utftext.charCodeAt(i + 1);
     96         c3 = utftext.charCodeAt(i + 2);
     97         string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
     98         i += 3;
     99       }
    100     }
    101     return string;
    102   }
    103 }
    104 
    105 
    106 var base = new Base64();
    107 
    108 function encode(str){
    109   return base.encode(str);
    110 }
    111 function decode(str) {
    112   return base.decode(str);
    113 }
    114 function safeEncode(str) {
    115   return encode(str).replace(/[+=/]/g, function (c) {
    116     switch (c) {
    117       case '+': return '.';
    118       case '=': return '-';
    119       case '/': return '_';
    120     }
    121   })
    122 }
    123 
    124 
    125 export {
    126   encode,
    127   decode,
    128   safeEncode
    129 }
  • 相关阅读:
    2018-8-10-如何写毕业论文-表格
    2018-8-10-win10-uwp-自定义控件初始化
    2018-8-10-win10-uwp-自定义控件初始化
    hashMap的hashCode() 和equal()的使用
    java中fail-fast 和 fail-safe的区别
    java各种集合的线程安全
    Java集合框架总结—超详细-适合面试
    CodeForces 1058C C. Vasya and Golden Ticket
    CodeForces 1058C C. Vasya and Golden Ticket
    CodeForces-1058B B. Vasya and Cornfield
  • 原文地址:https://www.cnblogs.com/linsx/p/9255870.html
Copyright © 2011-2022 走看看