Nodejs Base64 Encode toBase64()

Here you can find the source of toBase64()

Method Source Code

/*Extend the String object to create a function that converts the value of the String to and from Base64 using the ASCII character set.

'this is a string!!'.toBase64();/*from  w  ww . j av a 2s  . c om*/
should return 'dGhpcyBpcyBhIHN0cmluZyEh'

'dGhpcyBpcyBhIHN0cmluZyEh'.fromBase64();
should return 'this is a string!!'

see http://en.wikipedia.org/wiki/Base64
*/

String.prototype.toBase64 = function () {
  var stringyBits = this.match(/.{1,3}/g);
  var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
  result = stringyBits.map(function(threeLetters) {
   var letters = threeLetters.split("");
    var ascii3 = letters.map(function(char) {
      return pad(char.charCodeAt(0).toString(2),8);
    });
    var twentyFour3 = ascii3[0]+ascii3[1]+ascii3[2];
    var twentyFour4 = twentyFour3.match(/.{1,6}/g);
    var newLetters = twentyFour4.map(function(bStr) {
      return alphabet[parseInt(bStr,2)];
    });
    return newLetters.join("");
  });
  return result.join("");
};
String.prototype.fromBase64 = function () {
  var stringyBits = this.match(/.{1,4}/g);
  var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
  result = stringyBits.map(function(fourLetters) {
   var b64let = fourLetters.split("");
    var b64num = b64let.map(function(char) {
      return alphabet.indexOf(char);
    });
    var binary = b64num.map(function(char) {
      return pad(char.toString(2),6);
    });
    var twentyFour4 = binary[0] + binary[1] + binary[2] + binary[3];
    var twentyFour3 = twentyFour4.match(/.{1,8}/g);
    var newLetters = twentyFour3.map(function(str) {
      return String.fromCharCode(parseInt(str, 2));
    });
    return newLetters.join("");
  });
  return result.join("");
};
function pad(num, size) {
    var s = "000000000" + num;
    return s.substr(s.length-size);
}

Related

  1. toBase64()
    const CODES = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
    String.prototype.toBase64 = function() {
      let out = ''
      for (let i = 0, length = this.length; i < length; i += 3) {
        let [a, b, c] = [...this.slice(i, i + 3)].map(c => c.charCodeAt(0))
        bits = a << 16 | b << 8 | c
        out += CODES[bits >> 18 & 0x3F]
        out += CODES[bits >> 12 & 0x3F]
        out += b ? CODES[bits >> 6 & 0x3F] : '='
    ...
    
  2. toBase64()
    String.prototype.toBase64 = function() {
      var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
      var output = ""
      var chr1, chr2, chr3
      var enc1, enc2, enc3, enc4
       var i = 0
       do {
          chr1 = this.charCodeAt(i++)
          chr2 = this.charCodeAt(i++)
    ...
    
  3. toBase64()
    String.prototype.toBase64 = function(){
      var nToOrd = function(n){
        return n < 26 ? "A".charCodeAt(0) + n : (
          n < 52 ? "a".charCodeAt(0) - 26 + n : (
            n < 62 ? "0".charCodeAt(0) - 52 + n : (
              n==62 ? "+".charCodeAt(0) : "/".charCodeAt(0)
            )
          )
        );
    ...
    
  4. toBase64()
    var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
    String.prototype.toBase64 = function() {
      var encoded = [];
      var a, b, c;
      for (var i = 0, len = this.length; i < len; i = i + 3) {
        a = this.charCodeAt(i);
        encoded.push(code[a >> 2]);
        b = this.charCodeAt(i + 1);
        if (isNaN(b)) {
    ...
    
  5. toBase64()
    String.prototype.toBase64 = function() {
      var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
      var encoded = '';
      for(var i=0; i < this.length; i+=3) {
        var c1 = this.charCodeAt(i),
            c2 = this.charCodeAt(i+1),
            c3 = this.charCodeAt(i+2);
        encoded += chars[(c1 & 0xFC) >> 2];
        encoded += chars[((c1 & 0x03) << 4) | ((c2 & 0xF0) >> 4)];
    ...