У меня есть это приложение, где я должен использовать класс BitSet
и записывать в файл по частям. Я знаю, что не могу записать биты в файл, поэтому сначала я преобразовываю объект BitSet
в массив байтов и пишу в качестве байтового массива. Но проблема в том, что класс BitSet
, индексированный из right to left
, когда я преобразовываю объект BitSet
в массив байтов и записываю в файл, он записывает обратную ссылку.
Например, это мой объект BitSet:
10100100
и BitSet.get(0) дает false, а BitSet.get(7) дает значение true. Я хочу записать это в файл, например:
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();
Предполагается ли это так, или я делаю что-то неправильно? Спасибо.