威盛的一道笔试题(2007年10月)

北雨南萍
博客专家认证
2007-11-25 05:42:51
我在威盛笔试上遇到的一道题:Haffman解码两种方法,一种是搜索法,另一种是分步法。我没有做出来。看哪位大侠能提点一二。
...全文
280 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
不明LZ在说什么
gtkknd 2007-12-10
  • 打赏
  • 举报
回复
数据结构书中有
oo 2007-11-27
  • 打赏
  • 举报
回复
没搞明白搜索法和分步法的定义

要解码Haffman,总是要查Haffman编码表的,比如Haffman最长编码是8bits,如 0,10,110,1110,....代表0,1,2,3,...
一种方法是读一个bit,去Haffman编码表里查,如果有则取结果,如果没有,再取一bit,再去查Haffman编码表,直到找到有结果为止。

另一种方法,用一个256*2字节长的buffer(也可能需要更长,跟解码结果范围有关),把先把buffer根据Haffman编码表设置相应的值(根据上面的Haffman编码表,0-127填0(解码结果)和1(bits数),0x80到0xB7填1和2,...),这样每次先读一个字节,查表,得到解码结果和bits数,然后再读下一字节(需要bit移位来组装一个字节),再查表解码...,如果Haffman编码bit数大于8,可能用这个方法会浪费空间,可以分步做,还是前8bits用辅助表,后8bits用第一种方法的Haffman编码表方法。

用第二种方法可以大大提高解码速度,因为第一种方法对bit位操作次数太多。
北雨南萍 2007-11-27
  • 打赏
  • 举报
回复
没有人回答,我自己先顶一下

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧