Skip to content

Instantly share code, notes, and snippets.

@zeusdeux
Last active December 15, 2015 08:19
Show Gist options
  • Save zeusdeux/5229843 to your computer and use it in GitHub Desktop.
Save zeusdeux/5229843 to your computer and use it in GitHub Desktop.
This gist has two methods that convert between integer and its base 62 equivalent.
function toBase62(number, arr){
var list = [0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
if(!arguments.length)
throw new SyntaxError("toBase62: Invalid syntax. Use toBase62(number[, Array])");
number = parseInt(arguments[0], 10);
if(isNaN(number))
throw new TypeError("toBase62: First parameter needs to be a valid integer number");
if(number<0){
console.error("toBase62: Number passed is less than zero");
console.error("toBase62: Taking its abs and moving on");
number = Math.abs(number);
}
var q = Math.floor(number / 62), r = number % 62;
if (!(arguments[1] instanceof Array))
arr = arguments[1] = [];
/* arguments[2] is used internally for some book keeping */
if (!arguments[2])
arguments[2]=0;
if(arguments[2]===0 && arguments[1].length>0)
arr = arguments[1] = [];
if ( q === 0){
arr.push(list[r]);
return arr.reverse().join("");
}
else {
q = Math.floor(number / 62);
r = number % 62;
arr.push(list[r]);
return toBase62(q, arr,++arguments[2]);
}
}
function fromBase62ToInt(base62num){
if(!arguments.length || (typeof arguments[0] !== "string"))
throw new SyntaxError("fromBase62ToInt: Invalid syntax. Use fromBase62ToInt(String)");
var list = {
0: 0,
1: 1,
2: 2,
3: 3,
4: 4,
5: 5,
6: 6,
7: 7,
8: 8,
9: 9,
a: 10,
b: 11,
c: 12,
d: 13,
e: 14,
f: 15,
g: 16,
h: 17,
i: 18,
j: 19,
k: 20,
l: 21,
m: 22,
n: 23,
o: 24,
p: 25,
q: 26,
r: 27,
s: 28,
t: 29,
u: 30,
v: 31,
w: 32,
x: 33,
y: 34,
z: 35,
A: 36,
B: 37,
C: 38,
D: 39,
E: 40,
F: 41,
G: 42,
H: 43,
I: 44,
J: 45,
K: 46,
L: 47,
M: 48,
N: 49,
O: 50,
P: 51,
Q: 52,
R: 53,
S: 54,
T: 55,
U: 56,
V: 57,
W: 58,
X: 59,
Y: 60,
Z: 61
},
numArray = base62num.split("").reverse(),
intNum = 0;
for (var i = 0; i < numArray.length; i++){
intNum += list[numArray[i]]*(Math.pow(62,i));
}
return intNum;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment