有没有办法可以将 a 拆分BigInteger
成一个半字节数组(4 位段)?有一种内置方法可以获取字节数组BigInteger.toByteArray()
,但没有获取半字节的方法。
问问题
509 次
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 回答