Here you can find the source of createBigInteger(final String str)
Convert a String
to a BigInteger
; since 3.2 it handles hex (0x or #) and octal (0) notations.
Returns null
if the string is null
.
Parameter | Description |
---|---|
str | a <code>String</code> to convert, may be null |
Parameter | Description |
---|---|
NumberFormatException | if the value cannot be converted |
BigInteger
(or null if the input is null)
public static BigInteger createBigInteger(final String str)
//package com.java2s; /*// ww w . j a v a 2 s. c o m * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.math.BigInteger; public class Main { /** * <p>Convert a <code>String</code> to a <code>BigInteger</code>; * since 3.2 it handles hex (0x or #) and octal (0) notations.</p> * * <p>Returns <code>null</code> if the string is <code>null</code>.</p> * * @param str a <code>String</code> to convert, may be null * @return converted <code>BigInteger</code> (or null if the input is null) * @throws NumberFormatException if the value cannot be converted */ public static BigInteger createBigInteger(final String str) { if (str == null) { return null; } int pos = 0; // offset within string int radix = 10; boolean negate = false; // need to negate later? if (str.startsWith("-")) { negate = true; pos = 1; } if (str.startsWith("0x", pos) || str.startsWith("0x", pos)) { // hex radix = 16; pos += 2; } else if (str.startsWith("#", pos)) { // alternative hex (allowed by Long/Integer) radix = 16; pos++; } else if (str.startsWith("0", pos) && str.length() > pos + 1) { // octal; so long as there are additional digits radix = 8; pos++; } // default is to treat as decimal final BigInteger value = new BigInteger(str.substring(pos), radix); return negate ? value.negate() : value; } }