Как уже отмечалось, это не выполнимо в общий. Однако, как утверждают другие, это выполнимо, если вы делаете определенные предельные допущения. В дополнение к уже представленным, другое предположение может заключаться в том, что строки, которые вы конвертируете, - это все английские слова.
Тогда вы должны знать, что каждый символ занимает 2 или 3 цифры в целых числах.Следующий код иллюстрирует использование функции, которая проверяет, является ли исправны 2 цифры или должны ли вы рассмотреть 3 цифры:
public String convertBack(BigInteger bigInteger) {
StringBuilder buffer = new StringBuilder();
String digitString = bigInteger.toString();
for (int to, from = 0; from + 2 <= digitString.length(); from = to) {
// minimally extract two digits at a time
to = from + 2;
char c = (char) Integer.parseInt(digitString.substring(from, to));
// if two digits are not enough, try 3
if (!isLegalCharacter(c) && to + 1 <= digitString.length()) {
to++;
c = (char) Integer.parseInt(digitString.substring(from, to));
}
if (isLegalCharacter(c)) {
buffer.append(c);
} else {
// error, can't convert
break;
}
}
return buffer.toString();
}
private boolean isLegalCharacter(char c) {
return c == '\'' || Character.isLetter(c);
}
Данный isLegalCharacter
метод не очень сильный, но вы можете адаптировать его к вашим потребностям. Например, он не подходит для символов умляута, например, например, в слове «naïveté».
Если у вас знаю, то вы никогда не столкнетесь с такими случаями, вышеупомянутый подход может сработать для вас.