1 回答

TA貢獻1854條經(jīng)驗 獲得超8個贊
據(jù)我所知,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()
獲取一個字節(jié)數(shù)組計算數(shù)組長度的下一個八的倍數(shù)
如果這個數(shù)字與長度不相同,則需要填充
分配所需大小的數(shù)組
-1
負時用(符號擴展)填充填充(在另一種情況下它已經(jīng)具有所需的零)復制原始字節(jié)
請注意,符號擴展填充數(shù)組仍然與BigInteger(byte[])
構(gòu)造函數(shù)兼容,因此assert bigInt.equals(new BigInteger(array));
after 操作不應失敗。
添加回答
舉報