为什么用SharpZipLib或.net自带的GZip进行字符串压缩,压缩后结果反而比源字符串还要长

时间:2021-11-04 20:00:16
为什么用SharpZipLib或.net自带的GZip进行字符串压缩,压缩后结果反而比源字符串还要长


例:
源字串:
mystringsd-2-2-2-2-2-2-2-2-2- 

1. 用.net 自身的 GZipStream 压缩后结果
H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iha/xvWv0fwa7a9R/xrFr7H8NS7o99mvsf1r7N3i//8PJDNEmjoAAAA= 


2. 用SharpZipLib压缩后结果
QlpoOTFBWSZTWeNQolIAAAsZgAACEAAEoxwgIAAho0mnlPUIBppoJoA0A08XnFPi7kinChIcahRKQA== 



这不是坑么,还是我理解错了。  字符串压缩不就是把字符串变短一些么~  求大神解释一下

7 个解决方案

#1


是你理解错了
压缩有压缩算法,可以将重复的字符串按某一规则表示,所以会缩短
但是如果你的源字符串本身就过短,则压缩字符串可能会更长(因为它本身有定义协议,头,尾,长度,等等)

而且如果你的字符串本身非常不规则,压缩后也有可能更长

#2


不讲微软定义的压缩算法,
假设我们自己做一个压缩算法
将重复的字母按某个规则表示
比如AAAA表示成[A,4]
如果有连续5个以上的A,则字符串会缩短.相反如果连续A的个数本身不足5个,反而更长.

#3


楼主自己去建立1byte的文本,然后zip下看看结果就明白了

#4


所谓的压缩,要指在一定文本大小下,进行压缩
你的样本如果很小,比如"hsahfasjkfasdasdsadasda"即使有不少重复的字母,但是压缩后,反而加上需要其他信息,就会变大
但是如果你把一个1mb的txt文档压缩,就会小很多.

不管是加密还是压缩, 一定要考虑成本
网络传输时,有些时候只需要加密, 不需要压缩

#5


还有,net自带的GZipStream 是比较弱的.
所以SharpZipLib比GZipStream强
我以前接触过, 还有点印象,GZipStream弱爆了,只是一个比较稳定的压缩方法

另外,winrar, 你注意一下,最新的5.x我没有研究,但是3.x和4.x以下的版本的安装目录里, 有一个rar.exe的执行文件
你可以利用它给压缩, 它非常给力,无论是string,还是txt,都很不错!
强烈推荐!
SharpZipLib相比rar.exe就弱爆了.

#6


引用 5 楼 addisjeams 的回复:
还有,net自带的GZipStream 是比较弱的.
所以SharpZipLib比GZipStream强
我以前接触过, 还有点印象,GZipStream弱爆了,只是一个比较稳定的压缩方法

另外,winrar, 你注意一下,最新的5.x我没有研究,但是3.x和4.x以下的版本的安装目录里, 有一个rar.exe的执行文件
你可以利用它给压缩, 它非常给力,无论是string,还是txt,都很不错!
强烈推荐!
SharpZipLib相比rar.exe就弱爆了.

rar.exe的外调方法,c#的,网络上一搜索一大把

#7


rar在压缩时有5种模式,从最快到最好
最快基本就是单纯的将多文件整合成一个文件
最好是压缩比最高,当然也最慢.

#1


是你理解错了
压缩有压缩算法,可以将重复的字符串按某一规则表示,所以会缩短
但是如果你的源字符串本身就过短,则压缩字符串可能会更长(因为它本身有定义协议,头,尾,长度,等等)

而且如果你的字符串本身非常不规则,压缩后也有可能更长

#2


不讲微软定义的压缩算法,
假设我们自己做一个压缩算法
将重复的字母按某个规则表示
比如AAAA表示成[A,4]
如果有连续5个以上的A,则字符串会缩短.相反如果连续A的个数本身不足5个,反而更长.

#3


楼主自己去建立1byte的文本,然后zip下看看结果就明白了

#4


所谓的压缩,要指在一定文本大小下,进行压缩
你的样本如果很小,比如"hsahfasjkfasdasdsadasda"即使有不少重复的字母,但是压缩后,反而加上需要其他信息,就会变大
但是如果你把一个1mb的txt文档压缩,就会小很多.

不管是加密还是压缩, 一定要考虑成本
网络传输时,有些时候只需要加密, 不需要压缩

#5


还有,net自带的GZipStream 是比较弱的.
所以SharpZipLib比GZipStream强
我以前接触过, 还有点印象,GZipStream弱爆了,只是一个比较稳定的压缩方法

另外,winrar, 你注意一下,最新的5.x我没有研究,但是3.x和4.x以下的版本的安装目录里, 有一个rar.exe的执行文件
你可以利用它给压缩, 它非常给力,无论是string,还是txt,都很不错!
强烈推荐!
SharpZipLib相比rar.exe就弱爆了.

#6


引用 5 楼 addisjeams 的回复:
还有,net自带的GZipStream 是比较弱的.
所以SharpZipLib比GZipStream强
我以前接触过, 还有点印象,GZipStream弱爆了,只是一个比较稳定的压缩方法

另外,winrar, 你注意一下,最新的5.x我没有研究,但是3.x和4.x以下的版本的安装目录里, 有一个rar.exe的执行文件
你可以利用它给压缩, 它非常给力,无论是string,还是txt,都很不错!
强烈推荐!
SharpZipLib相比rar.exe就弱爆了.

rar.exe的外调方法,c#的,网络上一搜索一大把

#7


rar在压缩时有5种模式,从最快到最好
最快基本就是单纯的将多文件整合成一个文件
最好是压缩比最高,当然也最慢.