我已经编写了一个算法来实现Huffman编码以压缩文本文件。它基本上接受一个字符串作为输入并生成一个位串作为输出。然而,我遇到了存储这种二进制数据的问题,因为它以每个位作为字符存储,并消耗2个字节的内存进行存储。最终结果是,输出文件比输入文件更大,使整个程序毫无用处。我应该如何存储此二进制输出,使得每个位仅占用一个位的存储空间?
PS. 我尝试过使用BitSet,但这并没有改变输出的大小。
BitSet
中获得了结果,您可以调用BitSet.toByteArray()
将数据保存到文件中,例如:FileUtils.writeByteArrayToFile(new File(...), bitSet.toByteArray());
BitSet.valueOf(byte[])
从文件中读取数据:BitSet bitSet = new BitSet(FileUtils.readFileToByteArray(new File(...)));