繁体   English   中英

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

[英]Huffman code in binary(java)?

我已经成功构建了霍夫曼树,并且有一种遍历树的方法,并将每个字符的霍夫曼代码保存为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的字符串来表示单个字符。 那么有没有办法将代码另存为二进制位而不是字符串? 提前谢谢。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM