[问题] 用Huffman来压缩非文字档

楼主: welkins (和平真好)   2018-04-13 22:36:06
想请问一下
如果我想要实作一个用Huffman来压缩非文字档的压缩程式,
我的做法是先用一个阵列存每个ASCII各别的频率再依照频率去建Huffman Tree,
然而这种做法做出来的在解压缩txt的时候还能正常执行,
但是我试着压缩mp3之类时却无法成功解压缩。
原因是出在ASCII上面吗?
有点不知道这种情况要怎么解
希望各位可以指点一下,十分感谢
===========================
手边没code刚刚重写了一部分
开档部分是
ifstream fin;
fin.open("input.txt", ios::binary);
读进来的部分大概是这样
https://pastebin.com/tSAVHTTt
把ch读进来后存成ASCII频率的阵列
在用这个阵列去建Huffman
作者: uranusjr (←這人是超級笨蛋)   2018-04-13 22:53:00
非文字档哪来的 ASCII?你到底做了什么?
作者: james732 (好人超)   2018-04-13 22:54:00
比对看看解压缩后的内容是什么地方出错了?直觉跟换行字符有关(?
作者: Schottky (顺风相送)   2018-04-13 23:13:00
你怎么开档的是不是压缩只做了一半就断了
作者: wtchen (没有存在感的人)   2018-04-13 23:25:00
你的程式码呢?跟C的关联性呢?不补资讯就砍文
作者: school4303 (某爬虫类)   2018-04-14 00:10:00
就是要你贴code
作者: Schottky (顺风相送)   2018-04-14 00:20:00
没贴 code 只能掷筊https://youtu.be/3h_fx95i-bA?t=1m24s
作者: nightnawk (西西)   2018-04-14 00:37:00
你阵列存的是一个char所以写出去应该也是0x00~0xff
作者: jerryh001   2018-04-14 00:45:00
sign/unsign的问题?
作者: Lipraxde (Lipraxde)   2018-04-14 03:21:00
当成文字处理是什么意思啊?不是直接用0~255的值去算喔?
作者: wtchen (没有存在感的人)   2018-04-14 03:47:00
我给你12小时把code补上,不然砍文
作者: Schottky (顺风相送)   2018-04-14 08:06:00
那应该就是程式写错而已,多找找 bug,加油 (拍肩)code 不完整。然后这边就标准的 signed/unsigned 错误想想如果 ch 的内容是 -100 (你以为是156) 会发生什么事
作者: Lipraxde (Lipraxde)   2018-04-14 13:05:00
字数数错也不会变乱码吧,应该还有其他地方错
作者: Schottky (顺风相送)   2018-04-15 08:12:00
应该还有其他地方错+1

Links booklink

Contact Us: admin [ a t ] ucptt.com