Java:以最节省内存的方式存储位

时间:2013-10-21 18:50:55

标签: java huffman-code storing-data

我编写了一个算法来实现Huffman Coding来压缩文本文件。它基本上将字符串作为输入,并生成一串位作为输出。但是,我在存储这个二进制数据时遇到了问题,因为它存储为一个字符串,其中每个位都是一个字符,并占用2个字节的内存用于存储。最终结果,输出文件大于输入,使整个程序一文不值。我应该如何存储这个二进制输出,使每个位只占用一位内存用于存储? PS。我尝试过使用BitSet但是并没有改变输出的大小

1 个答案:

答案 0 :(得分:1)

BitSet获得结果后,您可以致电

BitSet.toByteArray()将您的数据保存到文件中,即:

FileUtils.writeByteArrayToFile(new File(...), bitSet.toByteArray());

BitSet.valueOf(byte[])从文件中读取您的数据:

BitSet bitSet = new BitSet(FileUtils.readFileToByteArray(new File(...)));