我已经成功构建了霍夫曼树,并且有一种遍历树的方法,并将每个字符的霍夫曼代码保存为1和0的字符串: public void encode(HuffmanNode node, String aux) { if (!node.isLeaf()) { if (node.getLeft() != null) { aux = aux + "0"; encode(node.getLeft(), aux); } if (node.getRight() != null){ aux = aux + "1"; encode(node.getRight(), aux); } } else { //building a character-code pair and add to keyMap keyMap.put(new Character(node.getCh()), aux); }}其中keyMap是一个HashMap,可将每个字符映射到其Huffman代码。但是,将霍夫曼代码另存为字符串只会增加编码文件的大小,而不会压缩它,因为您需要一个0和1的字符串来表示单个字符。那么有没有办法将代码另存为二进制位而不是字符串?提前谢谢。
1 回答
![?](http://img1.sycdn.imooc.com/533e4d00000171e602000200-100-100.jpg)
繁华开满天机
TA贡献1816条经验 获得超4个赞
不要使用aString
来存储二进制结果,请使用java.util.BitSet
。
它恰好满足您的要求,允许您按索引位置设置各个位。
准备提取二进制值时,可以使用toByteArray()
。
添加回答
举报
0/150
提交
取消