如何创建一个设置256位的biginteger?我已经尝试了以下内容:
BigInteger.valueOf(0xFFFFFFFFFFFFFFFFL)
,但这并没有给我带来理想的结果:
int bitCount = b.bitCount();// 0
int bitLength = b.bitLength();// 0
我基本上需要的是包含256位设置的数字。
tnx!
尝试以下:
BigInteger.ONE.shiftLeft(256).subtract(BigInteger.ONE)
它计算出第一个2^256,该2^256在二进制A中,然后是256个零,然后减去仅留下256个的一个。
biginteger,带256 1位:
byte[] b = new byte[256 / 8 + 1]; // 256 bits + 1 byte
Arrays.fill(b, (byte) 0xFF); // with all 1's
b[0] = 0; // except first 8 bits 0's, so value is positive
BigInteger bi = new BigInteger(b);
System.out.println(bi);
System.out.println("bitCount = " + bi.bitCount());
System.out.println("bitLength = " + bi.bitLength());
输出
115792089237316195423570985008687907853269984665640564039457584007913129639935
bitCount = 256
bitLength = 256
比 @henry的答案更麻烦,但可能更快,尽管这可能并不重要。