C# WinForm 字符串压缩与解压缩:使用 GZipStream 实现
使用 C# WinForm 开发一个简单的字符串压缩和解压缩工具,利用 System.IO.Compression 命名空间下的 GZipStream 类进行压缩和解压缩,并使用 Base64 编码将压缩后的数据转换为字符串输出。
步骤:
- 创建 WinForm 项目: 在 Visual Studio 中创建一个新的 WinForm 项目。
- 添加控件: 在窗体上添加两个文本框 (
txtInput和txtOutput),以及两个按钮 (btnCompress和btnDecompress)。 - 编写代码:
using System;
using System.IO;
using System.IO.Compression;
using System.Text;
using System.Windows.Forms;
namespace StringCompression
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void btnCompress_Click(object sender, EventArgs e)
{
string input = txtInput.Text;
if (!string.IsNullOrEmpty(input))
{
byte[] data = Encoding.UTF8.GetBytes(input);
using (MemoryStream memoryStream = new MemoryStream())
{
using (GZipStream gzipStream = new GZipStream(memoryStream, CompressionMode.Compress))
{
gzipStream.Write(data, 0, data.Length);
}
byte[] compressedData = memoryStream.ToArray();
string output = Convert.ToBase64String(compressedData);
txtOutput.Text = output;
}
}
}
private void btnDecompress_Click(object sender, EventArgs e)
{
string input = txtOutput.Text;
if (!string.IsNullOrEmpty(input))
{
byte[] compressedData = Convert.FromBase64String(input);
using (MemoryStream memoryStream = new MemoryStream(compressedData))
{
using (GZipStream gzipStream = new GZipStream(memoryStream, CompressionMode.Decompress))
{
using (StreamReader streamReader = new StreamReader(gzipStream))
{
string output = streamReader.ReadToEnd();
txtInput.Text = output;
}
}
}
}
}
}
}
- 运行程序: 运行程序,在
txtInput文本框中输入需要压缩的字符串,点击btnCompress按钮进行压缩,压缩后的结果将显示在txtOutput文本框中。点击btnDecompress按钮可以将压缩后的字符串解压缩。
代码说明:
GZipStream类用于压缩和解压缩数据。CompressionMode.Compress表示压缩模式。CompressionMode.Decompress表示解压缩模式。Convert.ToBase64String()方法将压缩后的数据转换为 Base64 编码的字符串。Convert.FromBase64String()方法将 Base64 编码的字符串转换为字节数组。
注意事项:
- 该程序只处理字符串,不考虑数字情况。
- 压缩后的字符串长度可能比原始字符串更长,尤其对于较短的字符串。
原文地址: https://www.cveoy.top/t/topic/lq15 著作权归作者所有。请勿转载和采集!