我有这个应用程序,我应该BitSet
大量使用类并一点一点地写入文件。我知道我不能将位写入文件,所以首先我将BitSet
对象转换为字节数组并写入字节数组。但问题是由于BitSet
类从 索引right to left
,当我将BitSet
对象转换为字节数组并写入文件时,它会向后写入。
例如,这是我的 BitSet 对象:
10100100
BitSet.get(0) 给出假,BitSet.get(7) 给出真。我想把它写到文件中:
00100101
所以第一位是0,最后一位是1。
我的转换方法:
public static byte[] toByteArray(BitSet bits)
{
byte[] bytes = new byte[(bits.length() + 7) / 8];
for (int i = 0; i < bits.length(); i++) {
if (bits.get(i)) {
bytes[bytes.length - i / 8 - 1] |= 1 << (i % 8);
}
}
return bytes;
}
我的写法:
FileOutputStream fos = new FileOutputStream(filePath);
fos.write(BitOperations.toByteArray(cBitSet));
fos.close();
这是打算这样还是我做错了什么?谢谢你。