回 帖 发 新 帖 刷新版面

主题:[讨论]数据结构臭作--huffman编码解码(2进制形式)

以为huffman压缩很好写,所以编了一个,发现有问题!

程序能够比较好的编码/解码,但是,由于我是用二进制读写的,而huffman 编码长度不能保证是8的整数倍,所以实际写入文件的有效的编码是n个byte外加0到7个bits;那么最后再解码的时候,最后一个字节的多余的若干bits的信息就有可能造成多余的字符被解出来...

这么说吧,比如空格比较多,其编码是'00',而我最后多余了7个bits的信息,且每位都是'0',那么在解码的时候,就会多解出3个空格出来!

望哪位高手可以帮我解决这个问题!

(程序的编排有些乱,大家就将就一下吧,抱歉了!)

回复列表 (共19个回复)

11 楼

太强了

12 楼

最后多余的用一个长度大于7的编码的前若干位补齐,这样最后一次解码时走不到叶子,得不到解码,没有多余输出,不知道这样行不行?

13 楼

holanbell

感谢,这就是我想要的!

14 楼

嘿~楼主还有版主,我把这个帖子做个链接到‘数据结构与算法’版里,可以吧~~

谢谢提供啊。

15 楼

在文件头建一个块,记录冗余的bit数。

16 楼

暂时看不懂...真希望能插上话啊

17 楼

太厉害了

18 楼

[quote]最后多余的用一个长度大于7的编码的前若干位补齐,这样最后一次解码时走不到叶子,得不到解码,没有多余输出,不知道这样行不行?[/quote]
可能可以实现,但总感觉不是很安全...
楼主可以考虑将结束符与要编码的一起编码,文件末加结束符号,多余的随便加入即可,解码到结束符就结束不在输出!,这样不是更安全,还可以用于其他用途!

19 楼

[quote]可能可以实现,但总感觉不是很安全...
楼主可以考虑将结束符与要编码的一起编码,文件末加结束符号,多余的随便加入即可,解码到结束符就结束不在输出!,这样不是更安全,还可以用于其他用途!
[/quote]

good!

我来回复

您尚未登录,请登录后再回复。点此登录或注册