我编码霍夫曼算法。霍夫曼算法写入文件
我把一个文件读入一个字符串,然后建立一个霍夫曼树并用 编码的数据进行编码。
我把它放在一个新的String中,并将它写入到新文件中,但它增加了文件的大小而不是减小它!
我知道什么是错的:
当输入字符串像它3*8=24
位
然而,当它被编码为"000111"
它6*8=68
位
有没有人有什么想法?
我应该如何在输出文件中编写"000111"
字符串,以便它只需要6位?
我正在使用Java。
请帮忙。
我编码霍夫曼算法。霍夫曼算法写入文件
我把一个文件读入一个字符串,然后建立一个霍夫曼树并用 编码的数据进行编码。
我把它放在一个新的String中,并将它写入到新文件中,但它增加了文件的大小而不是减小它!
我知道什么是错的:
当输入字符串像它3*8=24
位
然而,当它被编码为"000111"
它6*8=68
位
有没有人有什么想法?
我应该如何在输出文件中编写"000111"
字符串,以便它只需要6位?
我正在使用Java。
请帮忙。
您需要选择一种方式先打包字节,LSB或MSB,然后使用位移运算符来实现它。并记住Java没有无符号字节的概念,并且字符串不等同于字节数组。
自从我被教授关于哈夫曼编码已经很长时间了,但我确定你编码并保存在二进制文件中而不是二进制的字符串表示形式!
你在这里有一个很大的误解。霍夫曼编码的输出应该是一个原始的二进制流,而不是任何正常意义上的“字符串”。你应该在做二进制I/O。这在Java中并不是微不足道的,但你应该在这里找到大量的例子(例如http://stackoverflow.com/questions/903375/huffman-compression-algorithm)。 – Mat 2011-12-31 22:10:53