10进制转62进制,即数字转6位字符(a-zA-Z0-9)
private static final char[] charSet = "qwertyuiopasdfghjklzxcvbnm0123456789QWERTYUIOPASDFGHJKLZXCVBNM".toCharArray();
/**
* 10进制转62进制
* @param number
* @return
*/
public static String hex10To62(Long number){
Long rest=number;
Stack<Character> stack=new Stack<Character>();
StringBuilder result=new StringBuilder(0);
while(rest!=0){
stack.add(charSet[new Long((rest-(rest/62)*62)).intValue()]);
rest=rest/62;
}
for(;!stack.isEmpty();){
result.append(stack.pop());
}
return result.toString();
}
/**
* 62进制转10进制
* @param sixty_str
* @return
*/
public static String hex62To10(String sixty_str){
Long dst = 0L;
for(int i=0; i<sixty_str.length(); i++)
{
char c = sixty_str.charAt(i);
for(int j=0; j<charSet.length; j++)
{
if(c == charSet[j])
{
dst = (dst * 62) + j;
break;
}
}
}
return dst.toString();
}
charSet
数组的顺序不同,可导致转换的结果不同。所以可能会和网上的算法结果不能通用。