初始化
java.math.BigInteger
类为所有 Java 的原始整数运算符和 java.lang.Math
的所有相关方法提供运算类似物。由于 java.math
包不会自动提供,你可能必须先导入 java.math.BigInteger
才能使用简单的类名。
要将 long
或 int
值转换为 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
。