使用时间戳作为文件名时,缩短文件名的长度,可以使用此方法。
运行结果:
1570283088299L=Re27oHT
Re27oHT=1570283088299
调用方法:
public static void main(String[] args) {
System.out.println("1570283088299L=" + _10_to_62(1570283088299L));
System.out.println("Re27oHT=" + _62_to_10("Re27oHT"));
}
工具类:(复制后可以直接使用)
package util;
/**
* 转换工具类
*
* @author ALI
*
*/
public class ConversionUtils {
public static void main(String[] args) {
System.out.println("1570283088299L=" + _10_to_62(1570283088299L));
System.out.println("Re27oHT=" + _62_to_10("Re27oHT"));
}
/**
* 10进制转62进制
*
* @param n
* @return
*/
public static String _10_to_62(long n) {
if (n <= 0) {
return "0";
}
String s = "";
long a = 0;
while (n > 0) {
a = n % 62;
if (a < 10) {
s = (char) (a + 48) + s;// 转为0-9
} else if (a < 36) {
s = (char) (a + 55) + s;// 转为A-Z
} else {
s = (char) (a + 61) + s;// 转为a-z
}
n /= 62;
}
return s;
}
/**
* 62进制转10进制
*
* @param s
* @return
*/
public static long _62_to_10(String s) {
long n = 0;
long p = 1;
int c = 0;
for (int i = s.length() - 1; i >= 0; i--) {
c = s.charAt(i);
if (c > 96) {
n += (c - 61) * p;// a-z转为数字
} else if (c > 64) {
n += (c - 55) * p;// A-Z转为数字
} else {
n += (c - 48) * p;// 0-9转为数字
}
p *= 62;
}
return n;
}
}