- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经成功构建了我的霍夫曼树,并且我有一个方法可以遍历树并将每个字符的霍夫曼代码保存为由 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,它将每个字符映射到其霍夫曼代码。
但是,将霍夫曼代码保存为字符串只会增加编码文件的大小,而不是压缩它,因为您需要一个由 0 和 1 组成的字符串来表示单个字符。那么有没有办法将代码保存为二进制位而不是字符串呢?提前谢谢。
最佳答案
不要使用String
来存储二进制结果,请使用java.util.BitSet
。
它完全符合您的要求,允许您按索引位置设置各个位。
当您准备好提取二进制值时,可以使用toByteArray()
。
关于java - 二进制(java)中的霍夫曼代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50939749/
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我这样定义了一个二叉树: struct btree { int x; btree* left_child = nullptr; btree* right_child = nul
我有这个霍夫曼代码,旨在返回数组中每个字母的霍夫曼代码并按字母顺序打印它们。问题是它不生成任何输出,而是继续处理,直到我手动退出它。谁能帮我找出错误吗?我认为我的代码是正确的,但我不知道无限循环从何而
动机 想象一下一个哈夫曼压缩文件被部分下载,就像在p2p软件中一样,所以我们首先为整个文件分配磁盘空间,然后开始随机下载文件块。其中一个哈夫曼密码(但我们不知道是哪一个)是一个结束密码,所以如果这个密
以下 block 由霍夫曼 block 标记嵌套 -HUFF---------------------------------------------------------------------0
我是一名优秀的程序员,十分优秀!