为了账号安全,请及时绑定邮箱和手机立即绑定

二进制(Java)中的霍夫曼代码?

二进制(Java)中的霍夫曼代码?

侃侃无极 2021-04-03 14:19:59
我已经成功构建了霍夫曼树,并且有一种遍历树的方法,并将每个字符的霍夫曼代码保存为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 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

不要使用aString来存储二进制结果,请使用java.util.BitSet

它恰好满足您的要求,允许您按索引位置设置各个位。

准备提取二进制值时,可以使用toByteArray()


查看完整回答
反对 回复 2021-04-18
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信