Base62: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
No edit summary
 
Line 14: Line 14:
  * =============================================================================
  * =============================================================================
  * @author    Chorke Inc<[email protected]>
  * @author    Chorke Inc<[email protected]>
  * @version  1.0.00.GA
  * @version  0.0.00.GA
  * @since    1.0.00.GA
  * @since    0.0.00.GA
  * =============================================================================
  * =============================================================================
  * @method    Number.prototype.toBase62()
  * @method    Number.prototype.toBase62()
Line 48: Line 48:
  * =============================================================================
  * =============================================================================
  * @author    Chorke Inc<[email protected]>
  * @author    Chorke Inc<[email protected]>
  * @version  1.0.00.GA
  * @version  0.0.00.GA
  * @since    1.0.00.GA
  * @since    0.0.00.GA
  * =============================================================================
  * =============================================================================
  * @method    String.prototype.toBase10()
  * @method    String.prototype.toBase10()

Latest revision as of 00:11, 15 November 2017

About Base62

Base62 consist of 0-9A-Za-z and use to compress big Base10 into sort number. That may considered one kind of Encryption like Base64.

Why Base62

Base10 Big Integer Number quite difficult to memorized where Base62 compress/represent by sort length String.

Base62 Encode

/**
 * =============================================================================
 * Number.prototype.toBase62() developed aim to reduce(compress) the length of
 * big sized Integer Number. We developed it like regular base62 convention to
 * support popular most web browser in prior to the Sencha Ext JS MVVM
 * =============================================================================
 * @author    Chorke Inc<[email protected]>
 * @version   0.0.00.GA
 * @since     0.0.00.GA
 * =============================================================================
 * @method    Number.prototype.toBase62()
 * @package   Number.prototype
 * @class     Number
 * @public
 * =============================================================================
 */
CKi.proto(Number, 'toBase62', function(){
    var base10  = parseInt(this),
        modulus, base62;
    
    //for((confirm base10 integer);(prevents base10 negative integer);(bitwise hack to fail big integer))
    for ((base10 = base10 !== +base10 || base10 % 1 ? -1 : base10, base62 = ''); (base10 >= 0); (base10 = Math.floor(base10 / 62) || -1)){
        // base10 % 62 ->  0 - 61
        // 0 - 9 | 36-61 | 10- 35
        // 48-57 | 65-90 | 97-121
        // 0 - 9 | A - Z | a -  z
        base62 = String.fromCharCode(((modulus = base10 % 62) > 9 ? modulus > 35 ? 29 : 87 : 48) + modulus) + base62;
    }
    return base62;
});

Base62 Dencode

/**
 * =============================================================================
 * String.prototype.toBase10() developed aim to expand(decompress) the length
 * of big sized Integer Number. We developed it like regular base62 convention
 * to support popular most web browser in prior to the Sencha Ext JS MVVM
 * =============================================================================
 * @author    Chorke Inc<[email protected]>
 * @version   0.0.00.GA
 * @since     0.0.00.GA
 * =============================================================================
 * @method    String.prototype.toBase10()
 * @package   String.prototype
 * @class     String
 * @public
 * =============================================================================
 */
CKi.proto(String, 'toBase10', function(){
    var base62  = String(this),
        iterator, ascii, base10;
    
    //for((confirm base10 string);(if 'iterator' equals '-1', 'ascii' is 'NaN' cases break the loop);)
    for ((base10 = iterator = (base62 === (/\W|_|^$/.test(base62 += '') || base62) ) - 1);(ascii = base62.charCodeAt(iterator++));){
        base10 = base10 * 62 + ascii - [, 48, 29, 87][ascii >> 5];
    }
    return base10;
});