GZipStream压缩解压字符串

/// 使用GZipStream压缩数据
     public byte [] CompressionData( byte [] input)
    {
           
byte [] temp = null ;
           
try
            {
               
using (MemoryStream ms = new MemoryStream())
                {
                   
using (GZipStream compressStream = new GZipStream(ms, CompressionMode.Compress, true ))
                    {
                       
// 写入目标流
                        compressStream.Write(input, 0 , input.Length);

                    }
                    temp
= ms.ToArray();

                }
            }
           
catch (Exception ex)
            {
               
throw ex;
            }

           
return temp;
        }

       
/// 解压缩数据
        public byte [] DecompressionData( byte [] input)
        {
           
byte [] temp = null ;
           
try
            {
               
using (MemoryStream baseData = new MemoryStream())
                {

                    MemoryStream rmstemp
= new MemoryStream(input);
                   
using (GZipStream DecompressString = new GZipStream(rmstemp, CompressionMode.Decompress))
                    {
                       
byte [] buff = new byte [ 4096 ];
                       
int n;
                       
while ((n = DecompressString.Read(buff, 0 , buff.Length)) != 0 )
                        {
                            baseData.Write(buff,
0 , n);
                        }
                    }
                    rmstemp.Dispose();
                    rmstemp.Close();

                    temp
= baseData.ToArray();
                }
            }
           
catch (Exception ex)
            {
                temp
= null ;
            }
           
return temp;
        }

在 C# 中,可以使用 GZipStream 类轻松压缩字符串。以下是示例代码: ```csharp using System; using System.IO; using System.IO.Compression; class Program { static void Main(string[] args) { string originalString = "This is the original string to be compressed."; // 压缩字符串 byte[] compressedBytes; using (MemoryStream ms = new MemoryStream()) { using (GZipStream gzip = new GZipStream(ms, CompressionMode.Compress)) { using (StreamWriter writer = new StreamWriter(gzip)) { writer.Write(originalString); } } compressedBytes = ms.ToArray(); } // 将压缩后的字节数组转换回字符串 string compressedString = Convert.ToBase64String(compressedBytes); Console.WriteLine("Original string length: " + originalString.Length); Console.WriteLine("Compressed string length: " + compressedString.Length); } } ``` 在上面的代码中,我们使用 GZipStream 类将原始字符串压缩为字节数组,然后将字节数组转换为 Base64 编码的字符串。可以看到,压缩后的字符串长度很短,这意味着我们可以使用更少的空间来存储数据。 如果需要解压缩字符串,可以使用类似以下的代码: ```csharp using System; using System.IO; using System.IO.Compression; class Program { static void Main(string[] args) { string compressedString = "H4sIAAAAAAAAALvJyCxWAKtLAwAAAA=="; // 将压缩后的字符串转换为字节数组 byte[] compressedBytes = Convert.FromBase64String(compressedString); // 解压缩字节数组并转换为原始字符串 string originalString; using (MemoryStream ms = new MemoryStream(compressedBytes)) { using (GZipStream gzip = new GZipStream(ms, CompressionMode.Decompress)) { using (StreamReader reader = new StreamReader(gzip)) { originalString = reader.ReadToEnd(); } } } Console.WriteLine("Original string: " + originalString); } } ``` 在上面的代码中,我们使用 GZipStream 类将压缩后的字节数组解压缩为原始字符串。需要注意的是,解压缩后的字符串可能包含不可见字符,因此建议使用 Base64 编码来转换压缩后的字节数组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值