2013-10-11 2 views
0

내가자바 변환 문자열

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 자리/char 또는 3 자리/char를 기대할지를 알지 못합니다. – inixsoftware

+0

그래서 짧은 문자열조차도 많은 가능성을 창출 할 수 있기 때문에 쉽게 할 수 있는지 묻습니다. – hudadiaz

답변

1

은 각 숫자 '는'Z '(97 ~ 122)에

  1. (65 90),'Z '로하거나'A '사이에 놓여 또는 가정이다 사람들은 숫자 형
    • 가 다음 루프 다른
  2. 생을 얻을 계속 않는 경우로 변환하여 위의 경계 내에있는 경우 substring()
  3. 검사에 대한 호출을 통해 처음 2 자리 숫자를 얻을 수 번째 자리와 당신이이 편지의 경우 매 3 자리 숫자가 ASCII 문자를 형성에만 작동

    코드 것을 알 것이다, 그래서이 세 자리로 채워질 수있을 수 있다면

이 훨씬 간단하다고 확인 : 값 26 ~ 99를 들어,이 값을 올바르게 2 개 자리를 가진로 해석됩니다 : 당신이 num>25에 테스트를 변경하는 경우

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); 
} 

참고은, 그것은 제대로까지 26에서 모든 ASCII 값에 대해 작동합니다 100에서 255까지 처음 2 자릿수 만 보게되므로 10-25로 표시되고 3 자릿수로 해석됩니다.