【问题标题】:C# Gzip Write Custom CompressC# Gzip 编写自定义压缩
【发布时间】:2017-09-24 11:45:12
【问题描述】:

我有这种解压方法,我想根据它做一个压缩方法。谁能帮助我? (我试过自己写但没有用)

解压方式:

public static byte[] Decompress(byte[] data)
{
   MemoryStream memoryStream = new MemoryStream();
   memoryStream.Write(data, 0, data.Length);
   memoryStream.Position = 0L;
   GZipStream gZipStream = new GZipStream(memoryStream, CompressionMode.Decompress, true);
   MemoryStream memoryStream2 = new MemoryStream();
   byte[] array = new byte[64];

   for (int i = gZipStream.Read(array, 0, array.Length); i > 0; i = gZipStream.Read(array, 0, array.Length))
   {
        memoryStream2.Write(array, 0, i);
   }

   gZipStream.Close();
   return memoryStream2.ToArray();
}

这就是我尝试编写 Compress 方法的方式,但是当我将其解压缩回来时没有得到正确的结果:

public static byte[] Compress(byte[] data)
        {
            MemoryStream memoryStream = new MemoryStream();
            memoryStream.Write(data, 0, data.Length);
            memoryStream.Position = 0L;
            GZipStream gZipStream = new GZipStream(memoryStream, CompressionMode.Compress, false);
            byte[] array = new byte[64];
            gZipStream.Write(array, 0, array.Length);
            gZipStream.Close();
            return memoryStream.ToArray();
        }

【问题讨论】:

  • 您有具体问题吗?请阅读How to Ask
  • 我没有其他规范,我想在解压的基础上制作压缩方法。
  • 那就试着去做吧。如果您遇到一些特定问题 - 寻求解决方案。
  • 我编辑了我的问题,请立即检查。
  • 请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。请参阅How to Ask 页面以获得澄清此问题的帮助。

标签: c# gzip compression


【解决方案1】:

尝试使用以下简单实现:

public static byte[] Compress(byte[] data)
{
    using (MemoryStream memoryStream = new MemoryStream())
    using (GZipStream gzipStream = new GZipStream(memoryStream, CompressionMode.Compress, true))
    {
        gzipStream.Write(data, 0, data.Length);
        return memoryStream.ToArray();
    }
}

【讨论】:

  • 是的,但在解压缩方法中,它总是读取 64 个字节,而不是一次全部读取。
  • 如果该方法将所有解压缩数据作为单字节数组返回,是否有理由按短块读取?
  • 是的,有。因为稍后需要根据另一种算法对结果进行加密。
  • 完全不清楚你在说什么。究竟什么是“结果”?问题中的加密在哪里?而且主题本身仍然没有具体的问题!
  • 抱歉我的英语不好,我只是想让压缩方法正常工作。如果你能帮助我,那就太好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-14
  • 1970-01-01
  • 2021-11-30
  • 2015-07-21
  • 2013-10-01
  • 2017-02-11
  • 2016-12-26
相关资源
最近更新 更多