0

私が持っていると言う

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

resultでしょう8011411110311497109109105110103。そんなこと知ってる

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

好奇心から、簡単な方法でプロセスを逆にすることは可能ですか?

4

1 に答える 1

1

あなたがしなければならないことは、各数字が「A」から「Z」(65から90)または「a」から「z」(97から122)のいずれかにあると仮定することです

  1. を呼び出して最初の 2 桁を取得するsubstring()
  2. 数値型に変換して、それらが上記の範囲内にあるかどうかを確認します
    • そうであれば、ループを続行します
  3. それ以外の場合は、3 桁目を取得して確認します

3桁ごとにASCII文字を形成したことがわかるように、3桁にパディングすることができれば、はるかに簡単になります

文字の場合にのみ機能するコード:

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、26 から 99 までのすべての ASCII 値に対して正しく機能することに注意してください。 2 桁なので、10 ~ 25 と見なされ、3 桁の長さと解釈されます。

于 2013-10-11T00:30:43.077 に答える