文本壓縮算法 無損壓縮為16位字符串,并且可逆。有什么好的算法?
無損壓縮為16位字符串,并且可逆。有什么好的算法?WinRAR使用自己的原始壓縮算法。[希望大家能看看最優(yōu)二叉樹(Huffman tree),了解Huffman編碼的原理,對您的壓縮算法有非常清晰的指
無損壓縮為16位字符串,并且可逆。有什么好的算法?
WinRAR使用自己的原始壓縮算法。[希望大家能看看最優(yōu)二叉樹(Huffman tree),了解Huffman編碼的原理,對您的壓縮算法有非常清晰的指導(dǎo)和解謎效果]WinRAR采用了自己獨(dú)創(chuàng)的壓縮算法。壓縮是在二進(jìn)制模式下完成的。是關(guān)于你的編碼。只要處理的結(jié)果小于原始文檔文件,并且是可逆還原的,就沒有壓縮。壓縮率取決于編碼方式。無損壓縮是指對壓縮后的數(shù)據(jù)進(jìn)行重構(gòu)(還原、解壓縮),重構(gòu)后的數(shù)據(jù)與原始數(shù)據(jù)完全相同。該方法適用于特殊應(yīng)用(如指紋圖像、醫(yī)學(xué)圖像等)中的文本數(shù)據(jù)、程序和圖像數(shù)據(jù)的壓縮,其重構(gòu)信號與原始信號完全一致。這種算法的壓縮比較低,一般為1/2~1/5。典型的無損壓縮算法有:Shanno-Fano編碼、Huffman編碼、算術(shù)編碼、游程編碼、LZW編碼等?;诠蚵幋a原理的壓縮算法:哈夫曼算法的過程是統(tǒng)計(jì)原始數(shù)據(jù)中每個(gè)字符的頻率,所有字符按頻率降序排列,例如有一個(gè)字符串:aaaaaaaaaaaabbbbcccd。原始文件大小存儲需要20字節(jié)。如果字符串中的每個(gè)字符根據(jù)頻率給定不同的編碼長度,就可以達(dá)到壓縮的目的。如果a碼是01(占2位),B碼是00(占2位),C碼是000(占3位),C碼是001(占3位),那么壓縮后的總長度是(2×102×63×31×3)/8=5.5字節(jié)。另外,解碼時(shí),要告知對方你的編碼方法,需要傳遞過去的編碼規(guī)則。對于上面的字符串,您還可以根據(jù)aaaaaaaaaaaa,BBBBBB=2,CCC=3,d=4將其編碼為1。這樣,壓縮的內(nèi)容是最小的,但是應(yīng)該注意的是,您的編碼規(guī)則是最大的。當(dāng)您要將編碼規(guī)則發(fā)送給另一方時(shí),編解碼器規(guī)則文件可能比壓縮內(nèi)容大。最終結(jié)果是壓縮文件比原始文件大。
能否把1GB的數(shù)據(jù)壓縮到1MB甚至更小的體積?
這真的是可能的。這只是一個(gè)可行的方法。沒有現(xiàn)成的技術(shù)。您可以將記錄信息的二進(jìn)制代碼轉(zhuǎn)換為10進(jìn)制,然后將小數(shù)點(diǎn)移到前面。這樣,就可以得到小于1的很長的小數(shù)點(diǎn)。理論上,可以將兩個(gè)較短的數(shù)字相除,得到以10為基數(shù)的超長十進(jìn)制數(shù)??梢杂檬S嗫臻g記錄計(jì)算方法、有限位、編碼形式等數(shù)據(jù)。但這將是對計(jì)算機(jī)計(jì)算能力的一次特殊考驗(yàn),特別是在加密計(jì)算量特別大的時(shí)候,現(xiàn)階段計(jì)算機(jī)無法完成這樣的任務(wù),我相信它會。?!韭泯X】【裸齒】【裸齒
文件壓縮原理非常簡單。讓我舉個(gè)例子來理解它。例如,如果你是一家公司的老板,你想知道下面100名員工的工資,所以HR會給你一個(gè)excel表格。
此excel有100行,第一行是姓名,第二行是相應(yīng)的薪資。HR給你每個(gè)員工的工資,這是文件本身。你開始稱贊這位員工工作認(rèn)真。第二天,一個(gè)聰明的人事專家來了。他發(fā)現(xiàn),除了第一個(gè)員工是2000元外,excel表實(shí)際上要花1000元。因此,智能人事專家重新繪制了一個(gè)excel表格,只有兩行。第一條線第一個(gè)員工2000元,第二條線其他員工1000元。這叫做壓縮。這也稱為無損壓縮。
但如果其他員工不都是1000元,有的是998元,有的是999元,有的是1002元,有的是1003元。你只是老板,不是工薪族,所以沒必要這么細(xì)心地掌握,所以這個(gè)聰明的員工還是給你一張桌子,第一行是2000,第二行是其他員工1000。雖然這張表格不夠準(zhǔn)確,但足以讓你了解整體薪資。這稱為有損壓縮。