Java:如何将字母数字字符串转换为整数,从整数转换为相同的字母数字字符串?

时间:2016-03-01 15:41:56

标签: java

我正在尝试将字母数字字符串转换为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;

}

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

假设您正在讨论Integer类型,那么您尝试的内容将无效。

假设我们将自己限制为6个字符的字母数字字符串,根据您的示例。有62个(拉丁文)字母数字字符:10位数字,26个大写字母和26个小写字母。

不同的6个字符的字母串的总数是62 6 == 56800235584.但是只有2个 32 == 4294967296个不同的值{{1} } / int可以代表。这是一个数量级太小。

因此,在数学上不可能提出一种编码,可以将所有可能的6个字符的字母字符串表示为不同的integer值。

(如果您使用int代替long,则11个字符串太长。)