Как конвертировать большие числа из одной базы в другую - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь преобразовать функцию SQL в Groovy для использования в Elasticsearch, но я застрял на этом этапе. Учитывая, что в своей жизни я никогда не касался java или groovy, что я делаю не так?

CODE

public String convertFromBaseToBase(String str, int fromBase, int toBase) {
    return Integer.toString(Integer.parseInt(str, fromBase), toBase);
}

output = convertFromBaseToBase("8f8f87878f8f8080", 16, 10);

System.out.print(output);

Взято из Преобразование из одной базы в другую в Java

ERROR

java.lang.NumberFormatException: для входной строки: "8f8f87878f8f8080"
at java_lang_Integer $ parseInt.call (неизвестный источник)
в Script1.convertFromBaseToBase (Script1.groovy: 2)
на Script1.run (Script1.groovy: 5)

1 Ответ

0 голосов
/ 02 сентября 2018

8f8f87878f8f8080 - очень большое число (10344635885392199808 в десятичном виде), и оно не будет помещаться в Integer.

Для таких больших чисел вам придется использовать BigInteger.

public static String convertFromBaseToBase (String str, int fromBase, int toBase){
  return (new BigInteger(str, fromBase)).toString(toBase);
}

Рабочий код --> https://www.onlinegdb.com/B1mMEcKPX

BigInteger -->https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#toString(int)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...