Base62
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 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 1.0.00.GA
* @since 1.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 1.0.00.GA
* @since 1.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;
});