package io.kaif.token;
public class Base62 {
public static final String ALPHABET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
public static final long BASE = ALPHABET.length();
public static String fromBase10(long i) {
StringBuilder sb = new StringBuilder("");
while (i > 0) {
i = fromBase10(i, sb);
}
return sb.reverse().toString();
}
private static long fromBase10(long i, final StringBuilder sb) {
int rem = (int) (i % BASE);
sb.append(ALPHABET.charAt(rem));
return i / BASE;
}
public static long toBase10(String str) {
return toBase10(new StringBuilder(str).reverse().toString().toCharArray());
}
private static long toBase10(char[] chars) {
long n = 0;
for (int i = chars.length - 1; i >= 0; i--) {
n += toBase10(ALPHABET.indexOf(chars[i]), i);
}
return n;
}
private static long toBase10(long n, int pow) {
return n * (long) Math.pow(BASE, pow);
}
private Base62() {
}
}