private static String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
private static int scale = 62;
private static int minLength = 5;
/**
* 数字转62进制
* @return
*/
public static String encode(long num) {
StringBuilder sb = new StringBuilder();
int remainder;
while (num > scale - 1) {
remainder = Long.valueOf(num % scale).intValue();
sb.append(chars.charAt(remainder));
num = num / scale;
}
sb.append(chars.charAt(Long.valueOf(num).intValue()));
String value = sb.reverse().toString();
return StringUtils.leftPad(value, minLength, '0');
}
/**
* 62进制转为数字
* @return
*/
public static long decode(String str) {
str = str.replace("^0*", "");
long value = 0;
char tempChar;
int tempCharValue;
for (int i = 0; i < str.length(); i++) {
tempChar = str.charAt(i);
tempCharValue = chars.indexOf(tempChar);
value += (long) (tempCharValue * Math.pow(scale, str.length() - i - 1));
}
return value;
}
public static void main(String[] args) {
Long a = (long) ((Math.random()*(9999999999l-1000000000l+1))+1000000000l);
String e62 = encode(a);
System.out.println(e62);
Long d10 = decode(e62);
System.out.println(d10);
}