整数到字母数字字符串转换

时间:2016-02-22 08:31:18

标签: java string character-encoding

我需要将五位数整数转换为长度为5的字母数字字符串。在下面进行操作但有时它不提供字母数字但是数字值。

Long x = 12345L;
String code = Long.toHexString(x).toUpperCase();

我想总是得到长度为5的字母数字字符串。

2 个答案:

答案 0 :(得分:1)

这并不奇怪。

例如,0x1234574565,因此当74565不包含任何数字 AF时转换为十六进制。

鉴于999990x1869F,您在转换后的字符串中有足够的空间来容纳一些"垃圾"数据,考虑引入一个加性常数(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