1. Обзор
В этом руководстве мы покажем, как преобразовать String
в BigInteger
. BigInteger обычно
используется для работы с очень большими числовыми значениями, которые обычно являются результатом произвольных арифметических вычислений.
2. Преобразование десятичных (с основанием 10) целых строк
Чтобы преобразовать десятичную строку
в BigInteger
, мы будем использовать конструктор BigInteger(String value)
:
String inputString = "878";
BigInteger result = new BigInteger(inputString);
assertEquals("878", result.toString());
3. Преобразование недесятичных целых строк
При использовании конструктора BigInteger(String value)
по умолчанию для преобразования недесятичной строки
, такой как шестнадцатеричное число, мы можем получить NumberFormatException
: ****
String inputString = "290f98";
new BigInteger(inputString);
Это исключение может быть обработано двумя способами.
Один из способов — использовать конструктор BigInteger(String value, int radix)
:
String inputString = "290f98";
BigInteger result = new BigInteger(inputString, 16);
assertEquals("2690968", result.toString());
В этом случае мы указываем систему счисления или основание как 16 для преобразования шестнадцатеричной системы счисления в десятичную.
Другой способ — сначала преобразовать недесятичную строку
в массив байтов
, а затем использовать конструктор BigIntenger(byte [] bytes)
:
byte[] inputStringBytes = inputString.getBytes();
BigInteger result = new BigInteger(inputStringBytes);
assertEquals("290f98", new String(result.toByteArray()));
Это дает нам правильный результат, потому что конструктор BigIntenger(byte [] bytes)
превращает массив байтов
, содержащий двоичное представление с дополнением до двух, в BigInteger
.
4. Вывод
В этой статье мы рассмотрели несколько способов преобразования String
в BigIntger
в Java.
Как обычно, все примеры кода, использованные в этом руководстве, доступны на GitHub .