我需要将五位数整数转换为长度为5的字母数字字符串。在下面进行操作但有时它不提供字母数字但是数字值。
Long x = 12345L;
String code = Long.toHexString(x).toUpperCase();
我想总是得到长度为5的字母数字字符串。
答案 0 :(得分:1)
这并不奇怪。
例如,0x12345
为74565
,因此当74565
不包含任何数字 A
到F
时转换为十六进制。
鉴于99999
是0x1869F
,您在转换后的字符串中有足够的空间来容纳一些"垃圾"数据,考虑引入一个加性常数(0xA0000
,或许至少可以保证至少一个alpha字符用于正输入),或者甚至是一个与原始XOR一致的数字。
答案 1 :(得分:1)
试试这个
static String alphaNumric(int value) {
String s = "abcde" + Integer.toString(value, 36);
return s.substring(s.length() - 5);
}
和
int[] tests = { 12345, 1, 36, 36 * 36, 32767, 99999 };
for (int i : tests)
System.out.println(i + " -> " + alphaNumric(i));
输出
12345 -> de9ix
1 -> bcde1
36 -> cde10
1296 -> de100
32767 -> depa7
99999 -> e255r