Перейти к основному содержимому

Преобразование строки в BigInteger в Java

· 2 мин. чтения

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 .