第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 Big Integer 值轉(zhuǎn)換為 Java 中 8 的倍數(shù)的八位字節(jié)(2s 補碼大端)序列

將 Big Integer 值轉(zhuǎn)換為 Java 中 8 的倍數(shù)的八位字節(jié)(2s 補碼大端)序列

狐的傳說 2021-12-01 16:12:10
Java中如何將大整數(shù)轉(zhuǎn)換為以下字節(jié)數(shù)組形式:大整數(shù)被編碼為八位字節(jié)序列,采用二進制補碼表示法,以大端字節(jié)序傳輸。如果序列的長度不是八字節(jié)的倍數(shù),那么大整數(shù)應該用最少數(shù)量的前導符號擴展字節(jié)填充,使長度成為八字節(jié)的倍數(shù)。這與KMIP 協(xié)議的第 9.1.1.4 節(jié)項目值有關(guān)
查看完整描述

1 回答

?
嗶嗶one

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 操作不應失敗。


查看完整回答
反對 回復 2021-12-01
  • 1 回答
  • 0 關(guān)注
  • 221 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號