[問題] 用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