1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.IO.Compression; using System.Data; namespace Lis2013HISWSTest { public class ZipHelper { /// <summary> /// 解压 /// </summary> /// <param name="Value"></param> /// <returns></returns> public static DataSet GetDatasetByString( string Value) { DataSet ds = new DataSet(); string CC = GZipDecompressString(Value); System.IO.StringReader Sr = new StringReader(CC); ds.ReadXml(Sr); return ds; } /// <summary> /// 根据DATASET压缩字符串 /// </summary> /// <param name="ds"></param> /// <returns></returns> public static string GetStringByDataset( string ds) { return GZipCompressString(ds); } /// <summary> /// 将传入字符串以GZip算法压缩后,返回Base64编码字符 /// </summary> /// <param name="rawString">需要压缩的字符串</param> /// <returns>压缩后的Base64编码的字符串</returns> public static string GZipCompressString( string rawString) { if ( string .IsNullOrEmpty(rawString) || rawString.Length == 0) { return "" ; } else { byte [] rawData = System.Text.Encoding.UTF8.GetBytes(rawString.ToString()); byte [] zippedData = Compress(rawData); return ( string )(Convert.ToBase64String(zippedData)); } } /// <summary> /// GZip压缩 /// </summary> /// <param name="rawData"></param> /// <returns></returns> public static byte [] Compress( byte [] rawData) { MemoryStream ms = new MemoryStream(); GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Compress, true ); compressedzipStream.Write(rawData, 0, rawData.Length); compressedzipStream.Close(); return ms.ToArray(); } /// <summary> /// 将传入的二进制字符串资料以GZip算法解压缩 /// </summary> /// <param name="zippedString">经GZip压缩后的二进制字符串</param> /// <returns>原始未压缩字符串</returns> public static string GZipDecompressString( string zippedString) { if ( string .IsNullOrEmpty(zippedString) || zippedString.Length == 0) { return "" ; } else { byte [] zippedData = Convert.FromBase64String(zippedString.ToString()); return ( string )(System.Text.Encoding.UTF8.GetString(Decompress(zippedData))); } } /// <summary> /// ZIP解压 /// </summary> /// <param name="zippedData"></param> /// <returns></returns> public static byte [] Decompress( byte [] zippedData) { MemoryStream ms = new MemoryStream(zippedData); GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Decompress); MemoryStream outBuffer = new MemoryStream(); byte [] block = new byte [1024]; while ( true ) { int bytesRead = compressedzipStream.Read(block, 0, block.Length); if (bytesRead <= 0) break ; else outBuffer.Write(block, 0, bytesRead); } compressedzipStream.Close(); return outBuffer.ToArray(); } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通