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

Coder 青田 2014-08-25 10:48:36
为什么用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==



这不是坑么,还是我理解错了。 字符串压缩不就是把字符串变短一些么~ 求大神解释一下
...全文
387 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-08-25
  • 打赏
  • 举报
回复
rar在压缩时有5种模式,从最快到最好 最快基本就是单纯的将多文件整合成一个文件 最好是压缩比最高,当然也最慢.
addisjeams 2014-08-25
  • 打赏
  • 举报
回复
引用 5 楼 addisjeams 的回复:
还有,net自带的GZipStream 是比较弱的. 所以SharpZipLib比GZipStream强 我以前接触过, 还有点印象,GZipStream弱爆了,只是一个比较稳定的压缩方法 另外,winrar, 你注意一下,最新的5.x我没有研究,但是3.x和4.x以下的版本的安装目录里, 有一个rar.exe的执行文件 你可以利用它给压缩, 它非常给力,无论是string,还是txt,都很不错! 强烈推荐! SharpZipLib相比rar.exe就弱爆了.
rar.exe的外调方法,c#的,网络上一搜索一大把
addisjeams 2014-08-25
  • 打赏
  • 举报
回复
还有,net自带的GZipStream 是比较弱的. 所以SharpZipLib比GZipStream强 我以前接触过, 还有点印象,GZipStream弱爆了,只是一个比较稳定的压缩方法 另外,winrar, 你注意一下,最新的5.x我没有研究,但是3.x和4.x以下的版本的安装目录里, 有一个rar.exe的执行文件 你可以利用它给压缩, 它非常给力,无论是string,还是txt,都很不错! 强烈推荐! SharpZipLib相比rar.exe就弱爆了.
addisjeams 2014-08-25
  • 打赏
  • 举报
回复
所谓的压缩,要指在一定文本大小下,进行压缩 你的样本如果很小,比如"hsahfasjkfasdasdsadasda"即使有不少重复的字母,但是压缩后,反而加上需要其他信息,就会变大 但是如果你把一个1mb的txt文档压缩,就会小很多. 不管是加密还是压缩, 一定要考虑成本 网络传输时,有些时候只需要加密, 不需要压缩
xdashewan 2014-08-25
  • 打赏
  • 举报
回复
楼主自己去建立1byte的文本,然后zip下看看结果就明白了
於黾 2014-08-25
  • 打赏
  • 举报
回复
不讲微软定义的压缩算法, 假设我们自己做一个压缩算法 将重复的字母按某个规则表示 比如AAAA表示成[A,4] 如果有连续5个以上的A,则字符串会缩短.相反如果连续A的个数本身不足5个,反而更长.
於黾 2014-08-25
  • 打赏
  • 举报
回复
是你理解错了 压缩有压缩算法,可以将重复的字符串按某一规则表示,所以会缩短 但是如果你的源字符串本身就过短,则压缩字符串可能会更长(因为它本身有定义协议,头,尾,长度,等等) 而且如果你的字符串本身非常不规则,压缩后也有可能更长

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧