2013-10-11 114 views
0

說,我有的java字符串轉換

String input = "Programming", result="\0"; 
    int temp; 
    for (int i=0;i<input.length();++i) { 
     temp = input.charAt(i); 
     result += temp; 
    } 

result8011411110311497109109105110103。我知道

P = 80 
    r = 114 
    o = 111 
    g = 103 
    r = 114 
    a = 97 
    m = 109 
    m = 109 
    i = 105 
    n = 110 
    g = 103 

出於好奇,是否有可能通過簡單的方法來逆轉過程?

+5

假設您有'123'。它應該是'12' +'3'還是'1' +'23'? – arshajii

+0

我不認爲你可以,因爲很難區分2個數字是一個char還是3個數字:p是'80',但g是'103'。所以,你不知道是否期望2位/字符或3位/字符 – inixsoftware

+0

這就是爲什麼我問是否可能,以簡單的方式做到這一點,因爲即使是一個短的字符串創造了這麼多的可能性。 – hudadiaz

回答

1

你必須做的是假設每個號碼在於無論是 'A' 之間 'Z',(65〜90)或 'A' 到 'Z'(97〜122)

  1. 獲得通過調用第2位substring()
  2. 檢查,如果那些躺在上面範圍內通過轉換爲數值型
    • 如果他們再與循環
  3. 別人得到THI繼續第三位和檢查

它就會簡單得多,如果你可以把它填充到三位數,所以你就會知道,每三個數字構成的ASCII字母

代碼只是工作,如果它是字母:

public static void main(String[] args) { 
    String toConvert= "8011411110311497109109105110103"; 
    String result=""; 
    while(toConvert.length()>0){ 
     String digits=toConvert.substring(0, 2); 
     int num=Integer.valueOf(digits); 
     if(('A'<=num&&num<='Z')||('a'<=num&&num<='z')){ 
      toConvert=toConvert.substring(2); 
     } 
     else{ 
      digits=toConvert.substring(0, 3); 
      num=Integer.valueOf(digits); 
      toConvert=toConvert.substring(3); 
     } 
     String letter = String.valueOf((char) num); 
     result+=letter; 
    } 
    System.out.println(result); 
} 

如果你改變了測試num>25,然後它會正確地爲所有的ASCII值從26工作起來:爲值26到99,將其解釋爲正確的有2位,爲值從100到255吧只會查看前兩位數字,因此它們將被視爲10-25,並且將被解釋爲3位數字長度