我正在尝试将字母数字字符串转换为Integer,并且需要从Integer生成相同的字母数字字符串。
以下是我的代码。他们有更好的方法来实现它吗?
Map<Character, String> lettersToNumbers = new HashMap<Character, String>();
lettersToNumbers .put('1', "01");
lettersToNumbers .put('2', "02");
lettersToNumbers .put('3', "03");
lettersToNumbers .put('4', "04");
lettersToNumbers .put('5', "05");
lettersToNumbers .put('6', "06");
lettersToNumbers .put('7', "07");
lettersToNumbers .put('8', "08");
lettersToNumbers .put('9', "09");
lettersToNumbers .put('0', "00");
lettersToNumbers .put('A', "10");
lettersToNumbers .put('B', "11");
lettersToNumbers .put('C', "12");
lettersToNumbers .put('D', "13");
lettersToNumbers .put('E', "14");
lettersToNumbers .put('F', "15");
lettersToNumbers .put('G', "16");
lettersToNumbers .put('H', "17");
lettersToNumbers .put('I', "18");
lettersToNumbers .put('J', "19");
lettersToNumbers .put('K', "20");
lettersToNumbers .put('L', "21");
lettersToNumbers .put('M', "22");
lettersToNumbers .put('N', "23");
lettersToNumbers .put('O', "24");
lettersToNumbers .put('P', "25");
lettersToNumbers .put('Q', "26");
lettersToNumbers .put('R', "27");
lettersToNumbers .put('S', "28");
lettersToNumbers .put('T', "29");
lettersToNumbers .put('U', "30");
lettersToNumbers .put('V', "31");
lettersToNumbers .put('W', "32");
lettersToNumbers .put('X', "33");
lettersToNumbers .put('Y', "34");
lettersToNumbers .put('Z', "35");
StringBuilder sb= new StringBuilder();
String covertToInteger = "FR1234".toUpperCase();
for (Character ch : covertToInteger.toCharArray()){
sb.append(lettersToNumbers.get(ch));
}
System.out.println(sb.toString());
String integertoalphanumeric= sb.toString();
int i=0;
for(;i<abc.length();){
for (Entry<Character, String> entry : lettersToNumbers.entrySet()) {
if (entry.getValue().equals(abc.substring(i, i+2))) {
System.out.print(entry.getKey());
}
}
i=i+2;
}
任何帮助将不胜感激。
答案 0 :(得分:1)
假设您正在讨论Integer
类型,那么您尝试的内容将无效。
假设我们将自己限制为6个字符的字母数字字符串,根据您的示例。有62个(拉丁文)字母数字字符:10位数字,26个大写字母和26个小写字母。
不同的6个字符的字母串的总数是62 6 == 56800235584.但是只有2个 32 == 4294967296个不同的值{{1} } / int
可以代表。这是一个数量级太小。
因此,在数学上不可能提出一种编码,可以将所有可能的6个字符的字母字符串表示为不同的integer
值。
(如果您使用int
代替long
,则11个字符串太长。)