2013-04-15 3 views
0

Я застреваю в самом конце моей проблемы, получая NumberFormatException.Преобразование строки в целые значения ascii

Я хочу взять строку, такие как Wsup, и превратить его в своих ASCII значений в результате «87115117112».

Я получил эту строку чисел, построенных успешно несколькими разными способами, но когда я пытаюсь сделать это parseInt(string), я получаю свое исключение. Я попытался распечатать строку в виде массива символов, чтобы искать скрытое пустое пространство, я использовал String.trim() без везения, я довольно смущен, почему он не распознается как действительное целое число.

public static int toAscii(String s){ 
    StringBuilder sb = new StringBuilder(); 
    String ascString = null; 
    long asciiInt; 
      for (int i = 0; i < s.length(); i++){ 
       sb.append((int)s.charAt(i)); 
       char c = s.charAt(i); 
      } 
      ascString = sb.toString(); 
      asciiInt = Integer.parseInt(ascString); // Exception here 
      return 0;// asciiInt; 0 in place just to run 
} 

Благодарим за предоставленную помощь.

+0

игнорировать этот символ c = s.char ... Rem nant другого пути, который я пробовал –

+0

87115117112 не подходит для 32-битного целого (подписанного или без знака). – heikkim

ответ

3

Йор asciiInt длинный тип сделайте это таким образом

asciiInt = Long.parseLong(ascString); 

вот ваша полная функция

public static long toAscii(String s){ 
     StringBuilder sb = new StringBuilder(); 
     String ascString = null; 
     long asciiInt; 
       for (int i = 0; i < s.length(); i++){ 
        sb.append((int)s.charAt(i)); 
        char c = s.charAt(i); 
       } 
       ascString = sb.toString(); 
       asciiInt = Long.parseLong(ascString); 
       return asciiInt; 
    } 
+2

+1 Кроме того, убедитесь, что вы возвращаете 'long', а не' int' ('public static long toAscii (String s)') – MadProgrammer

+0

Спасибо! Я признал, что мой результат не подходит для типа int, поэтому я изменил asciiInt до конца, но я не следил соответственно. Код установлен, спасибо снова –

0

Вы должны вернуться, пока не как целое число, у меня есть реализовать ToAscii() с небольшим значением

public static long toAscii(String s){ 
     StringBuilder sb = new StringBuilder(); 
     long asciiInt; 
     for (int i = 0; i < s.length(); i++){ 
      char c = s.charAt(i); 
      asciiInt = (int)c; 
      System.out.println(c +"="+asciiInt); 
      sb.append(asciiInt); 
     } 
     return Long.parseLong(sb.toString()); 
}