初始化

java.math.BigInteger 类为所有 Java 的原始整数运算符和 java.lang.Math 的所有相关方法提供运算类似物。由于 java.math 包不会自动提供,你可能必须先导入 java.math.BigInteger 才能使用简单的类名。

要将 longint 值转换为 BigInteger,请使用:

long longValue = Long.MAX_VALUE;
BigInteger valueFromLong = BigInteger.valueOf(longValue); 

或者,对于整数:

int intValue = Integer.MIN_VALUE; // negative
BigInteger valueFromInt = BigInteger.valueOf(intValue);

这会将 intValue 整数加宽为 long,使用符号位扩展为负值,这样负值将保持为负值。

要将数字 String 转换为 BigInteger,请使用:

String decimalString = "-1";
BigInteger valueFromDecimalString = new BigInteger(decimalString);

以下构造函数用于将指定基数中 BigInteger 的 String 表示转换为 BigInteger

String binaryString = "10";
int binaryRadix = 2;
BigInteger valueFromBinaryString = new BigInteger(binaryString , binaryRadix);

Java 还支持将字节直接转换为 BigInteger 的实例。目前只能使用有符号和无符号大端编码:

byte[] bytes = new byte[] { (byte) 0x80 }; 
BigInteger valueFromBytes = new BigInteger(bytes);

这将生成一个值为 -128 的 BigInteger 实例,因为第一位被解释为符号位。

byte[] unsignedBytes = new byte[] { (byte) 0x80 };
int sign = 1; // positive
BigInteger valueFromUnsignedBytes = new BigInteger(sign, unsignedBytes);

这将生成值为 128 的 BigInteger 实例,因为字节被解释为无符号数,并且符号显式设置为 1,即正数。

常见值有预定义常量:

  • BigInteger.ZERO - 值 0
  • BigInteger.ONE - 值 1
  • BigInteger.TEN - 值 10

还有 BigInteger.TWO(值为 2),但你不能在你的代码中使用它,因为它是 private