用于Java

时间:2016-01-27 07:32:17

标签: java netbeans huffman-code

我有霍夫曼编码项目,在第一步中我们获得每个字符的代码取决于霍夫曼树。我获得每个字符的代码例如:a = 01,b = 101,c = 111.these代码是字符串和我想要将它们保存在二进制扩展名为.cmp的文件中,例如我们有一个文本:abc和encoding是:01101111如何将它们写入带有.cmp扩展名的文件中的二进制值的文件,然后读取它们并解码它们?

2 个答案:

答案 0 :(得分:0)

希望你知道字节和整数由位组成,所以你只需要构建一个小位队列,它是一个包含位的单个整数和另一个跟踪第一个整数中位数的整数,使用累加位转移和或运营商。累积一个字节后,将其写出并将其移出队列。例如。将{em> n 位置于buf |= val << bits; bits += n;中,然后在有足够的时候拉出位:while (bits >= 8) { write_out(buf & 0xff); buf >>= 8; bits -= 8;。确保整数足够大,以处理您将拥有的 n 的最大值。即,buf需要能够保存 maxn + 7 位,因为while循环永远不会在缓冲区中留下超过7位。

答案 1 :(得分:0)

如果你想使用比特流,那么更容易采用完整的框架,例如JBBP (java binary block parser),其中JBBPBitOutputStream类提供位写操作(还有JBBPBitInputStream类来从流中读取位)