C#使用System.IO.Compression 处理Zlib Deflate 格式
2021/7/3 22:23:49
本文主要是介绍C#使用System.IO.Compression 处理Zlib Deflate 格式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
System.IO.Compression
使用System.IO.Compression.DeflateStream进行压缩和解压时 ,DeflateStream 压缩后的数据开头比Zlib压缩的数据少两个字节,结尾比Zlib少四个字节
所以以下解压的代码思路是在传入zlib格式的数据时把投两个字节和尾四个字节去掉以来匹配DeflateStream的格式,这种输出格式叫做 Raw Deflate 。压缩同理
代码如下:
//zlib标准头 78 01 - No Compression/low 78 9C - Default Compression 78 DA - Best Compression
public static byte[] MicrosoftDecompress(byte[] data) { //检查data头是否是zlib标准头 int flag = (int)data[0] + (int)data[1]; List<byte> new_data = data.ToList(); //121,276,338分别为zlib的标头的十进制 if (flag == 121 || flag == 276 || flag == 338) { new_data.RemoveRange(0, 2); new_data.RemoveRange(new_data.Count() - 4, 4); } MemoryStream compressed = new MemoryStream(new_data.ToArray()); MemoryStream decompressed = new MemoryStream(); DeflateStream deflateStream = new DeflateStream(compressed, CompressionMode.Decompress); // 注意: 这里第一个参数同样是填写压缩的数据,但是这次是作为输入的数据 deflateStream.CopyTo(decompressed); byte[] result = decompressed.ToArray(); return result; }
参考文献:
https://www.cnblogs.com/mq0036/p/14711737.html
https://stackoverflow.com/questions/39939869/data-format-for-system-io-compression-deflatestream#
-----------------------------------------------------------------我是分割线--------------------------------------------------------------
看完了觉得不错就点个赞或者评论下吧,感谢!!!
如果本文哪里有误随时可以提出了,收到会尽快更正的
这篇关于C#使用System.IO.Compression 处理Zlib Deflate 格式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID
- 2024-01-23用CI/CD工具Vela部署Elasticsearch + C# 如何使用
- 2024-01-23.NET开源的简单、快速、强大的前后端分离后台权限管理系统