C# GZipStream 压缩字符串
时间: 2023-11-23 22:12:52 浏览: 145
在 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 编码来转换压缩后的字节数组。
阅读全文