文件如何压缩 无损压缩为16位字符串,并且可逆。有什么好的算法?
无损压缩为16位字符串,并且可逆。有什么好的算法?
WinRAR使用自己的原始压缩算法。[希望大家能看看最优二叉树(Huffman tree),了解Huffman编码的原理,对您的压缩算法有非常清晰的指导和解谜效果]WinRAR采用了自己独创的压缩算法。压缩是在二进制模式下完成的。是关于你的编码。只要处理的结果小于原始文档文件,并且是可逆还原的,就没有压缩。压缩率取决于编码方式。无损压缩是指对压缩后的数据进行重构(还原、解压缩),重构后的数据与原始数据完全相同。该方法适用于特殊应用(如指纹图像、医学图像等)中的文本数据、程序和图像数据的压缩,其重构信号与原始信号完全一致。这种算法的压缩比较低,一般为1/2~1/5。典型的无损压缩算法有:Shanno-Fano编码、Huffman编码、算术编码、游程编码、LZW编码等。基于哈夫曼编码原理的压缩算法:哈夫曼算法的过程是统计原始数据中每个字符的频率,所有字符按频率降序排列,例如有一个字符串:aaaaaaaaaaaabbbbcccd。原始文件大小存储需要20字节。如果字符串中的每个字符根据频率给定不同的编码长度,就可以达到压缩的目的。如果a码是01(占2位),B码是00(占2位),C码是000(占3位),C码是001(占3位),那么压缩后的总长度是(2×102×63×31×3)/8=5.5字节。另外,解码时,要告知对方你的编码方法,需要传递过去的编码规则。对于上面的字符串,您还可以根据aaaaaaaaaaaa,BBBBBB=2,CCC=3,d=4将其编码为1。这样,压缩的内容是最小的,但是应该注意的是,您的编码规则是最大的。当您要将编码规则发送给另一方时,编解码器规则文件可能比压缩内容大。最终结果是压缩文件比原始文件大。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。