2016-03-01 71 views
-4

我試圖將一個字母數字字符串轉換爲一個整數,並從整數需要產生相同的字母數字字符串。Java:如何將字母數字字符串轉換爲整數並從整數轉換爲相同的字母數字字符串?

以下是我的代碼。他們有更好的方法來實現它嗎?

 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

你需要給比這更多的信息。你的意見是什麼?在哪裏檢查字符串和整數? –

+1

'3456'和'1234'之間的數學關係是什麼?預先和刪除'FR'應該很簡單。 –

+1

這不是一個可逆的功能。當您轉換爲整數時,您會失去「FR」信息,除非以某種方式保存它,否則無法反轉該操作。如果你需要這種控制,我會建議你編寫一個處理這種邏輯並保持一致的類。 – Neil

回答

1

假設你正在談論Integer類型,那麼你正在嘗試的將不起作用。

讓我們假設我們限制爲6個字符的字母數字字符串,按照您的示例。有62個(拉丁文)字母數字字符:10位數字,26個大寫字母和26個小寫字母。

不同6字符alphanum串的總數爲62 == 56800235584.但也有隻有2 == 4294967296,一個int/integer可以表示不同的值。這個數量級太小了。

因此,數學上不可能拿出可以表示所有可能的6個字符的字符串alphanum作爲不同int值的編碼。

(如果你使用long代替int,然後11個字符串太長。)

相關問題