BigInteger в строку в соответствии с ASCII - PullRequest
0 голосов
/ 29 сентября 2011

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

97098097=> "aba"

Мне действительно нужен эффективный способ взять целое число и преобразовать его в строку в соответствии со значением ASCII.Этот метод должен также учитывать тот факт, что перед '9' стоит no zero, когда строка "aba" имеет значение ASCII 97098097, так как 'a' имеет значение ASCII 097 иСтрока "dee" имеет один из 100101101.Это означает, что не каждое число будет иметь значение ASCII, которое имеет число, кратное трем.

Если у вас есть какие-либо недопонимания того, что я пытаюсь сделать, пожалуйста, дайте мне знать.

Ответы [ 2 ]

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

Таблица поиска не требуется.

    while (string.length() % 3 != 0)
    {
        string = '0' + string;
    }
    String result = "";
    for (int i = 0; i < string.length(); i += 3)
    {
        result += (char)(Integer.parseInt(string.substring(i, i + 3)));
    }
0 голосов
/ 29 сентября 2011

Во-первых, я бы создал в вашем коде таблицу поиска со всеми значениями ascii и их строковым эквивалентом. Затем возьмите большой int и преобразуйте его в строку. Затем сделайте мод 3 с длиной вашей строки bigint, чтобы определить, нужно ли добавлять 1, 2 или ноль в начале. Затем просто возьмите каждые 3 целых числа в начале числа, сравните его с таблицей поиска и добавьте соответствующее значение в строку результата.

Пример:

Дано 97098097 Вы бы конвертировали его в: "97098097"

Затем вы делаете мод с 3, в результате чего получается значение 1, поэтому необходимо добавить 1 ноль.

Добавить 1 ноль: "097098097"

Затем возьмите каждые 3 спереди и сравните, чтобы посмотреть таблицу:

097 -> a, поэтому result += "a"

098 -> b, т. Е. result += "b"

097 -> a, т. Е. result += "a"

В результате вы получите "aba"

...