哔哔one
据我所知,BigIntegerAPI没有提供填充功能,因此您必须自己进行填充:对于 a BigInteger bigInt,使用byte[] array = bigInt.toByteArray();int len = array.length, len8 = len+7 & ~7;if(len != len8) { int pad = len8 - len; byte[] nArray = new byte[len8]; if(bigInt.signum() < 0) Arrays.fill(nArray, 0, pad, (byte)-1); System.arraycopy(array, 0, nArray, pad, len); array = nArray;}首先,使用toByteArray()获取一个字节数组计算数组长度的下一个八的倍数如果这个数字与长度不相同,则需要填充分配所需大小的数组-1负时用(符号扩展)填充填充(在另一种情况下它已经具有所需的零)复制原始字节请注意,符号扩展填充数组仍然与BigInteger(byte[])构造函数兼容,因此assert bigInt.equals(new BigInteger(array));after 操作不应失败。