Я хочу иметь возможность преобразовывать числа в текст в соответствии с десятичной таблицей ASCII - PullRequest
0 голосов
/ 28 сентября 2011

Я пытаюсь сделать так, чтобы я мог взять отдельные трехсимвольные подстроки и преобразовать их в целые числа при условии, что длина строки кратна трем.Предполагается, что целые числа, в которые преобразуются разделенные подстроки, должны функционировать как относительные позиции в массиве, который содержит все печатные символы таблицы ASCII.

 String IntMessage = result.toString();
   if 
   {
   (IntMessage.substring(0,1)=="1" && IntMessage.length()%3==0)
       for(j=0;j < IntMessage.length()-2;j += 3)
           n = Integer.parseInt(IntMessage.substring(j,j+3));
           mess += ASCII[n-32];
       return mess;

В остальных случаях метод должен принимать первые двасимволы строки и инициализировать их переменной i.В этом случае переменная mess инициализируется символом в массиве ASCII с индексом i-32.Затем существует цикл for, который берет оставшиеся символы и разбивает их на трехзначные подстроки, и они берутся и заменяются на строки в соответствии с их соответствующими позициями в массиве ASCII.Строковые переменные в этом массиве постоянно добавляются в переменную mess, чтобы получить преобразование BigInteger в String строки IntMessage.

   int i = Integer.parseInt(IntMessage.substring(0,2));

   mess=ASCII[i-32];
           for(l=2; l< IntMessage.length() - 2; l+=3)
               r = Integer.parseInt(IntMessage.substring(l,l+3));
               mess+=ASCII[r-32];
   return mess;

По какой-то причине метод не работает, и я былинтересно, делал ли я что-то не так.Я знаю, как взять входную строку и преобразовать ее в последовательность чисел, но я хочу сделать и обратное.Вы можете чем-нибудь помочь?

1 Ответ

1 голос
/ 28 сентября 2011

На основании вашего описания вы можете использовать следующие методы:

String fromIntMessage(String msg) {
    StringBuilder result = new StringBuilder();
    for (int x = (msg.length() % 3 - 3) % 3; x < msg.length(); x += 3) {
        int chr = Integer.parseInt(msg.substring(Math.max(x, 0), x + 3));
        result.append(Character.toString((char) (chr - 32)));
    }
    return result.toString();
}

String toIntMessage(String string) {
    StringBuilder result = new StringBuilder();
    for (char c : string.toCharArray()) {
        result.append(String.format("%03d", c + 32));
    }
    return result.charAt(0) == '0' ? result.substring(1) : result.toString();
}

, который даст вам

toIntMessage("DAA")             // => "100097097"
fromIntMessage("100097097")     // => "DAA"
...