[英]Convert Big Integer value to eight bit bytes(2s complement big endian) sequence which is multiple of 8 in Java
據我所知, BigInteger
API沒有提供填充功能,所以你必須自己做填充:
對於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));
手術后永遠不會失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.