从BitSet转换为Byte数组
|
我已经选择了将BitSet转换为Byte数组的示例。
public static byte[] toByteArray(BitSet bits) {
byte[] bytes = new byte[bits.length()/8+1];
for (int i=0; i<bits.length(); i++) {
if (bits.get(i)) {
bytes[bytes.length-i/8-1] |= 1<<(i%8);
}
}
return bytes;
}
但是在讨论论坛中,我看到通过这种方法,我们将无法获得所有信息,因为每次计算将丢失一位。这是真的?我们需要修改上述方法吗?
没有找到相关结果
已邀请:
4 个回复
掀辟髓观粟
这为需要的位数提供了空间,但不再增加。基本上相当于“除以8,但总是四舍五入。”
瞥同忙接
席酱
。
桑娠贯涤
获取位集的大小可能会返回错误的结果;我不得不修改原始示例以利用size()方法来获取已定义的位集大小(而length()返回所设置的位数)。有关更多信息,请参见下面的线程。 java.util.BitSet-set()不能按预期工作