我编写了一个算法来实现Huffman Coding来压缩文本文件。它基本上将字符串作为输入,并生成一串位作为输出。但是,我在存储这个二进制数据时遇到了问题,因为它存储为一个字符串,其中每个位都是一个字符,并占用2个字节的内存用于存储。最终结果,输出文件大于输入,使整个程序一文不值。我应该如何存储这个二进制输出,使每个位只占用一位内存用于存储? PS。我尝试过使用BitSet但是并没有改变输出的大小
答案 0 :(得分:1)
在BitSet
获得结果后,您可以致电
BitSet.toByteArray()
将您的数据保存到文件中,即:
FileUtils.writeByteArrayToFile(new File(...), bitSet.toByteArray());
并BitSet.valueOf(byte[])
从文件中读取您的数据:
BitSet bitSet = new BitSet(FileUtils.readFileToByteArray(new File(...)));