如何使用所有位设置256位的BigInteger



如何创建一个设置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的答案更麻烦,但可能更快,尽管这可能并不重要。

最新更新