作者gwliao (gwliao)
看板CSSE
標題Re: [問題] 以bit為單位的無失真compressor...
時間Wed May 10 00:42:07 2006
※ 引述《jmren (學生)》之銘言:
: ※ 引述《jmren (學生)》之銘言:
: : 請問各位先進
: : 有人使用過以bit為單位的現成無失真compressor嗎
: : 網路上找到的大部份都是以byte為單位...囧
: : 感謝^^"
: 應該說現在假如有0001110010100001110010101010等bit 字串
: 現成的compressor都是以byte為單位下去壓縮
: 所以想問說
: 有那種以bit為基準的去壓縮的嗎...
很多壓縮法都是用字典的方式.
那字典是由很多個字組成, 字是由很多個字母組成.
那你把0和1當成字母,
然後再由這些字母找出字,
然後用這些字去組一個字典.
所以現在很多的壓縮的演算法都可以套用,
只是要自己改code而已......把Byte的operation變成bit的operation XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.230.125
1F:推 jmren:和老師說的不謀而合,正在努力coding LZW...囧 05/10 00:44
2F:推 jmren:只是問問有沒有人會sparse matrix的壓縮法...沒有那就算了 05/10 00:49
幫你做實驗, 加強你的信心. XD
我用rand()產生資料 (25%為1, 75%為0)
bit-1.txt是每一個bit為一筆資料.
bit-8.txt是每一個byte為一筆資料, 資料只有"0"和"1"兩種.
16384 bit-1.txt
131072 bit-8.txt
15222 bit-1.txt.bz2 15222/16384 =92.9%
16699 bit-8.txt.bz2 16699/131072=12.74%
所以......還是努力coding吧. :P
※ 編輯: gwliao 來自: 140.112.230.125 (05/10 00:55)
※ 編輯: gwliao 來自: 140.112.230.125 (05/10 00:55)
3F:推 jmren:bz2是什麼壓縮法,竟然比LZMA還厲害...QQ 05/10 01:12
4F:→ jmren:呵,這實驗我已經做了n次了...QQ,8byte是12.5%,1bit是84% 05/10 01:14
5F:→ jmren:但還是感謝你的熱心回應喲:) 05/10 01:14
7F:推 reader:bz2 是使用 BWT 的壓縮法, 請參考 #66 05/10 02:19
jmren大哥, 你會錯意了.
我想表達的是.......原本的壓縮法對你的資料其實是很有用的.
( 只是要將byte operation改成bit operation. XD )
而不是哪個壓縮法很有用.
實際試一下, 發現.....這些方法是很不錯. :)
再秀一些資料. gz表示用gzip壓, 7z......你應該知道. XD
(gzip -9)
13743 bit-1.txt.gz 83.88%
17392 bit-8.txt.gz 13.26%
(7z, 64Mb, 48 Bit)
14054 bit-1.txt.7z 85.78%
15774 bit-8.txt.7z 12.03%
※ 編輯: gwliao 來自: 140.112.230.125 (05/10 08:06)
8F:推 jmren:感謝感謝^^",但是其實那個以byte為單位存檔後再壓縮,他的 05/10 09:08
9F:→ jmren:壓縮率不能這樣算喲,因為原始資料只有131072bits,把每個 05/10 09:09
10F:→ jmren:bit改成byte下去存,所以變成131072byte,再拿去壓縮,故壓 05/10 09:11
11F:→ jmren:縮率應該是15774*8(bits) / 131072 (bits),是96.27% :) 05/10 09:11
12F:推 gwliao:我知道, 所以我說"這實驗是加強信心用的" XD 05/10 09:12
13F:→ jmren:上述分母是原始資料大小,而分子則是你壓縮結果:) 05/10 09:13
14F:→ gwliao:只是秀一下, 假如你的資料是以byte的形式出現的話 05/10 09:14
15F:→ gwliao:可以能壓多少. 05/10 09:15
16F:→ jmren:soga...呵,很感謝你熱心幫我^^" 05/10 09:15
17F:→ gwliao:那些演算法都是以byte為單位撰寫, 所以把你的data也用 05/10 09:16
18F:→ gwliao:data也用來表現, 試試現有的方法的表現, 用以估計... 05/10 09:16
19F:→ gwliao:用以估計那個程式是不是要寫下去. XD 所以是加強信心. 05/10 09:17
20F:→ gwliao:這麼有少字....Orz data也用"byte"來表現, 05/10 09:18