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

Java 整数到字母数字字符串的转换,java,string,character-encoding,Java,String,Character Encoding,我需要将五位整数转换为长度为5的字母数字字符串。执行以下操作,但有时它不提供字母数字值,而是提供数字值 Long x = 12345L; String code = Long.toHexString(x).toUpperCase(); 我希望总是得到长度为5的字母数字字符串。这并不奇怪 例如,0x12345是74565,因此74565在转换为十六进制时不包含A到F的任何数字 > 99999 0x1869F ,在转换的字符串中有足够的空间来容纳一些“垃圾”数据,考虑引入一个加法常数( 0

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

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

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

这并不奇怪

例如,
0x12345
74565
,因此
74565
在转换为十六进制时不包含
A
F
的任何数字

<> > <代码> 99999 <代码> 0x1869F ,在转换的字符串中有足够的空间来容纳一些“垃圾”数据,考虑引入一个加法常数(<代码> 0xAOWON/CODE >,也许至少保证了正输入的至少一个alpha字符),甚至是一个与原始XOR相同的数字。

试试这个

static String alphaNumric(int value) {
    String s = "abcde" + Integer.toString(value, 36);
    return s.substring(s.length() - 5);
}

输出

12345 -> de9ix
1 -> bcde1
36 -> cde10
1296 -> de100
32767 -> depa7
99999 -> e255r

“字母数字值”是什么意思?是否要将其转换为字符串?例如,对于Ex:-12345-->A12BC,有哪些规则?为什么12345会变成12BC?因此没有规则,从客户端我将生成一些五位数的TOTP,然后将其转换为相同长度的字母数字字符串,然后这些数据将传输到后端,在后端,类似的TOTP逻辑将运行并再次生成字母数字字符串。我这样做只是为了编码这个数值,我有空间限制,因为供应商,只有5个字符是允许的。
12345 -> de9ix
1 -> bcde1
36 -> cde10
1296 -> de100
32767 -> depa7
99999 -> e255r