Base64 isolated testing environment:



Base64 source code in cross-browser JavaScript object literal:


2.27 KBstatic@nightlydev:/javascript/base64.js
  1. var Base64 = {
  2.  
  3.   _keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
  4.  
  5.   encode:function(e) {
  6.     var t = "";
  7.     var n,r,i,s,o,u,a;
  8.     var f = 0;
  9.     e = Base64._utf8_encode(e);
  10.     while (f<e.length) {
  11.       n = e.charCodeAt(f++);
  12.       r = e.charCodeAt(f++);
  13.       i = e.charCodeAt(f++);
  14.       s = n>>2;
  15.       o = (n&3)<<4|r>>4;
  16.       u = (r&15)<<2|i>>6;
  17.       a = i&63;
  18.       if (isNaN(r)) u = a = 64;
  19.       else if (isNaN(i)) a = 64;
  20.       t = t+this._keyStr.charAt(s)
  21.         +this._keyStr.charAt(o)
  22.         +this._keyStr.charAt(u)
  23.         +this._keyStr.charAt(a);
  24.     }
  25.     return t;
  26.   },
  27.  
  28.   decode:function(e){
  29.     var t = "";
  30.     var n,r,i;
  31.     var s,o,u,a;
  32.     var f = 0;e = e.replace(/[^A-Za-z0-9\+\/\=]/g,"");
  33.     while (f<e.length) {
  34.       s = this._keyStr.indexOf(e.charAt(f++));
  35.       o = this._keyStr.indexOf(e.charAt(f++));
  36.       u = this._keyStr.indexOf(e.charAt(f++));
  37.       a = this._keyStr.indexOf(e.charAt(f++));
  38.       n = s<<2|o>>4;
  39.       r = (o&15)<<4|u>>2;
  40.       i = (u&3)<<6|a;
  41.       t = t+String.fromCharCode(n);
  42.       if (u != 64) t = t+String.fromCharCode(r);
  43.       if (a != 64) t = t+String.fromCharCode(i);
  44.     }
  45.     t = Base64._utf8_decode(t);
  46.     return t;
  47.   },
  48.  
  49.   _utf8_encode:function(e){
  50.     e = e.replace(/\r\n/g,"\n");
  51.     var t = "";
  52.     for (var n = 0;n<e.length;n++) {
  53.       var r = e.charCodeAt(n);
  54.       if (r<128) {t += String.fromCharCode(r);}
  55.       else if (r>127&&r<2048) {
  56.         t += String.fromCharCode(r>>6|192);
  57.         t += String.fromCharCode(r&63|128);
  58.       } else {
  59.         t += String.fromCharCode(r>>12|224);
  60.         t += String.fromCharCode(r>>6&63|128);
  61.         t += String.fromCharCode(r&63|128);
  62.       }
  63.     }
  64.     return t;
  65.   },
  66.  
  67.   _utf8_decode:function(e) {
  68.     var t = "";
  69.     var n = 0;
  70.     var r = c1 = c2 = 0;
  71.     while (n<e.length) {
  72.       r = e.charCodeAt(n);
  73.       if (r<128) {t += String.fromCharCode(r);n++;}
  74.       else if (r>191&&r<224) {
  75.         c2 = e.charCodeAt(n+1);
  76.         t += String.fromCharCode((r&31)<<6|c2&63);
  77.         n += 2;
  78.       } else {
  79.         c2 = e.charCodeAt(n+1);
  80.         c3 = e.charCodeAt(n+2);
  81.         t += String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);
  82.         n += 3;
  83.       };
  84.     }
  85.     return t;
  86.   }
  87. };

Copyright © 2017  NightlyDev.org (http://nightlydev.org) -
r - ✓ XHTML & CSS - CO2 Neutral -