1. Overview
In this tutorial, we'll demonstrate how we can convert a String to a BigInteger. The BigInteger is commonly used for working with very large numerical values, which are usually the result of arbitrary arithmetic calculations.
2. Converting Decimal (Base 10) Integer Strings
To convert a decimal String to BigInteger, we'll use the BigInteger(String value) constructor:
String inputString = "878";
BigInteger result = new BigInteger(inputString);
assertEquals("878", result.toString());
3. Converting Non-Decimal Integer Strings
When using the default BigInteger(String value) constructor to convert a non-decimal String, like a hexadecimal number, we may get a NumberFormatException:
String inputString = "290f98";
new BigInteger(inputString);
This exception can be handled in two ways.
One way is to use the BigInteger(String value, int radix) constructor:
String inputString = "290f98";
BigInteger result = new BigInteger(inputString, 16);
assertEquals("2690968", result.toString());
In this case, we're specifying the radix, or base, as 16 for converting hexadecimal to decimal.
The other way is to first convert the non-decimal String into a byte array, and then use the BigIntenger(byte [] bytes) constructor:
byte[] inputStringBytes = inputString.getBytes();
BigInteger result = new BigInteger(inputStringBytes);
assertEquals("290f98", new String(result.toByteArray()));
This gives us the correct result because the BigIntenger(byte [] bytes) constructor turns a byte array containing the two's-complement binary representation into a BigInteger.
4. Conclusion
In this article, we looked at a few ways to convert a String to BigIntger in Java.
As usual, all code samples used in this tutorial are available over on GitHub.
The post Converting String to BigInteger in Java first appeared on Baeldung.