0

BigIntegeraをニブル (4 ビット セグメント) の配列に分割する方法はありますか? バイト配列を取得する組み込みの方法がありますが、BigInteger.toByteArray()ニブルを取得する方法はありません。

4

1 に答える 1

1

取得したバイト配列を使用して、これを行う独自のメソッドを作成できますtoByteArray()

public static List<Byte> getNibbles(byte[] bytes) {
    List<Byte> nibbles = new ArrayList<Byte>();

    for (byte b : bytes) {
        nibbles.add((byte) (b >> 4));
        nibbles.add((byte) ((b & 0x0f)));
    }

    return nibbles;
}

public static void main(String[] args) {
    BigInteger i = BigInteger.valueOf(4798234);
    System.out.println(Arrays.toString(i.toByteArray()));
    System.out.println(getNibbles(i.toByteArray()));
}

出力

[73, 55, 26]
[4, 9, 3, 7, 1, 10]

バイト 55 を取ります。上位 4 ビットと下位 4 ビットをニブル リストに追加します。

55 = 00110111
(55 >> 4) = 00000011 (3)
(55 & 0x0f) = 00000111 (7)
于 2014-05-30T15:37:12.867 に答える