<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      用js編解碼base64

      編碼規(guī)則
      Base64編碼的思想是是采用64個基本的ASCII碼字符對數(shù)據(jù)進(jìn)行重新編碼。它將需要編碼的數(shù)據(jù)拆分成字節(jié)數(shù)組。以3個字節(jié)為一組。按順序排列24 位數(shù)據(jù),再把這24位數(shù)據(jù)分成4組,即每組6位。再在每組的的最高位前補兩個0湊足一個字節(jié)。這樣就把一個3字節(jié)為一組的數(shù)據(jù)重新編碼成了4個字節(jié)。當(dāng)所要編碼的數(shù)據(jù)的字節(jié)數(shù)不是3的整倍數(shù),也就是說在分組時最后一組不夠3個字節(jié)。這時在最后一組填充1到2個0字節(jié)。并在最后編碼完成后在結(jié)尾添加1到2個 “=”。

      實現(xiàn)的代碼:

         1:  //下面是64個基本的編碼
         2:  var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
         3:  var base64DecodeChars = new Array(
         4:      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
         5:      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
         6:      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
         7:      52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
         8:      -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
         9:      15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
        10:      -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
        11:      41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
        12:  //編碼的方法
        13:  function base64encode(str) {
        14:      var out, i, len;
        15:      var c1, c2, c3;
        16:      len = str.length;
        17:      i = 0;
        18:      out = "";
        19:      while(i < len) {
        20:      c1 = str.charCodeAt(i++) & 0xff;
        21:      if(i == len)
        22:      {
        23:          out += base64EncodeChars.charAt(c1 >> 2);
        24:          out += base64EncodeChars.charAt((c1 & 0x3) << 4);
        25:          out += "==";
        26:          break;
        27:      }
        28:      c2 = str.charCodeAt(i++);
        29:      if(i == len)
        30:      {
        31:          out += base64EncodeChars.charAt(c1 >> 2);
        32:          out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
        33:          out += base64EncodeChars.charAt((c2 & 0xF) << 2);
        34:          out += "=";
        35:          break;
        36:      }
        37:      c3 = str.charCodeAt(i++);
        38:      out += base64EncodeChars.charAt(c1 >> 2);
        39:      out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
        40:      out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
        41:      out += base64EncodeChars.charAt(c3 & 0x3F);
        42:      }
        43:      return out;
        44:  }
        45:  //解碼的方法
        46:  function base64decode(str) {
        47:      var c1, c2, c3, c4;
        48:      var i, len, out;
        49:      len = str.length;
        50:      i = 0;
        51:      out = "";
        52:      while(i < len) {
        53:      
        54:      do {
        55:          c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
        56:      } while(i < len && c1 == -1);
        57:      if(c1 == -1)
        58:          break;
        59:      
        60:      do {
        61:          c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
        62:      } while(i < len && c2 == -1);
        63:      if(c2 == -1)
        64:          break;
        65:      out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
        66:      
        67:      do {
        68:          c3 = str.charCodeAt(i++) & 0xff;
        69:          if(c3 == 61)
        70:          return out;
        71:          c3 = base64DecodeChars[c3];
        72:      } while(i < len && c3 == -1);
        73:      if(c3 == -1)
        74:          break;
        75:      out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
        76:      
        77:      do {
        78:          c4 = str.charCodeAt(i++) & 0xff;
        79:          if(c4 == 61)
        80:          return out;
        81:          c4 = base64DecodeChars[c4];
        82:      } while(i < len && c4 == -1);
        83:      if(c4 == -1)
        84:          break;
        85:      out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
        86:      }
        87:      return out;
        88:  }
        89:  function utf16to8(str) {
        90:      var out, i, len, c;
        91:      out = "";
        92:      len = str.length;
        93:      for(i = 0; i < len; i++) {
        94:      c = str.charCodeAt(i);
        95:      if ((c >= 0x0001) && (c <= 0x007F)) {
        96:          out += str.charAt(i);
        97:      } else if (c > 0x07FF) {
        98:          out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
        99:          out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));
       100:          out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
       101:      } else {
       102:          out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));
       103:          out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
       104:      }
       105:      }
       106:      return out;
       107:  }
       108:  function utf8to16(str) {
       109:      var out, i, len, c;
       110:      var char2, char3;
       111:      out = "";
       112:      len = str.length;
       113:      i = 0;
       114:      while(i < len) {
       115:      c = str.charCodeAt(i++);
       116:      switch(c >> 4)
       117:      { 
       118:        case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
       119:          // 0xxxxxxx
       120:          out += str.charAt(i-1);
       121:          break;
       122:        case 12: case 13:
       123:          // 110x xxxx   10xx xxxx
       124:          char2 = str.charCodeAt(i++);
       125:          out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
       126:          break;
       127:        case 14:
       128:          // 1110 xxxx  10xx xxxx  10xx xxxx
       129:          char2 = str.charCodeAt(i++);
       130:          char3 = str.charCodeAt(i++);
       131:          out += String.fromCharCode(((c & 0x0F) << 12) |
       132:                         ((char2 & 0x3F) << 6) |
       133:                         ((char3 & 0x3F) << 0));
       134:          break;
       135:      }
       136:      }
       137:      return out;
       138:  }
       
      調(diào)用:
       
         1:  //編碼
         2:  value = base64encode(utf16to8(src))
         3:   
         4:  //解碼
         5:  value = utf8to16(base64decode(src))
      posted @ 2012-08-27 15:34  Rick Sun  閱讀(62525)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 强奷漂亮人妻系列老师| 永胜县| 国产亚洲精品久久77777| 日本深夜福利在线观看| 日韩激情一区二区三区| 天堂在线www天堂中文在线| 亚洲欧美色综合影院| 91久久偷偷做嫩草影院免费看| 国产精品免费久久久免费| 国产成人无码AV大片大片在线观看| 精品久久久噜噜噜久久久| 秋霞人妻无码中文字幕| 亚洲中文字幕一区精品自| 最新精品国偷自产在线| 好深好湿好硬顶到了好爽| 亚洲精品一二三四区| 亚洲色欲色欱WWW在线| 男女猛烈激情xx00免费视频| 国产精品一品二区三四区| 日本精品不卡一二三区| 日韩不卡在线观看视频不卡| 亚洲AV高清一区二区三区尤物| 九九热精品免费在线视频| 九九热在线免费精品视频| 1精品啪国产在线观看免费牛牛| 国产超高清麻豆精品传媒麻豆精品| 国产区精品视频自产自拍| 免费人成网站免费看视频| 内射毛片内射国产夫妻| 亚洲精品一区二区三区蜜| 亚洲综合在线日韩av| 免费观看性行为视频的网站 | 亚洲一久久久久久久久| 国产AV福利第一精品| 国自产拍偷拍精品啪啪模特| 久久久久青草线蕉综合超碰| 蜜臀av无码一区二区三区| 无套内内射视频网站| 精品人妻午夜一区二区三区四区| 国产精品v片在线观看不卡| 野外做受又硬又粗又大视频√|