字符串压缩c语言(用c语言实现字符串压缩)
admin
2023-04-27 11:51:50

嗯,就是将比较大的字符串进行压缩,使其占用空间小一点,我一般用在有时候接口间需要传输大量数据的时候(json数据较大或者含有base64),缩小体积以加快传输小效率。

实现功能:

压缩和解压字符串

开发环境:

开发工具: Visual Studio 2013

.NET Framework版本:4.5

实现代码:

string fileData = "", compress = ""; private void btnPath_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == DialogResult.OK) { textBox1.Text = ofd.FileName; FileInfo fi = new FileInfo(ofd.FileName); GetSize(fi.Length, lbFile); fileData = File.ReadAllText(ofd.FileName); } } private void btnCompress_Click(object sender, EventArgs e) { compress = Compress(fileData); GetSize(Encoding.Default.GetBytes(compress).Length, lbCompress); MessageBox.Show("成功"); } private void btnDecompress_Click(object sender, EventArgs e) { richTextBox1.Text = Decompress(compress); MessageBox.Show("成功"); } //压缩字符串 public string Compress(string value) { try { string data = ""; byte[] byteArray = Encoding.Default.GetBytes(value); using (MemoryStream ms = new MemoryStream()) { using (GZipStream sw = new GZipStream(ms, CompressionMode.Compress)) { sw.Write(byteArray, 0, byteArray.Length); GetSize(ms.Length, lbCompress); } data = Convert.ToBase64String(ms.ToArray()); } return data; } catch (Exception ex) { throw ex; } } //解压缩字符串 public string Decompress(string value) { try { string data = ""; byte[] bytes = Convert.FromBase64String(value); using (MemoryStream msReader = new MemoryStream()) { using (MemoryStream ms = new MemoryStream(bytes)) { using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress)) { byte[] buffer = new byte[1024]; int readLen = 0; while ((readLen = zip.Read(buffer, 0, buffer.Length)) > 0) { msReader.Write(buffer, 0, readLen); } } } data = Encoding.Default.GetString(msReader.ToArray()); } return data; } catch (Exception ex) { throw ex; } } //获取大小 private void GetSize(long size, Control control) { string sizeStr = ""; if (size < 1024) sizeStr = size.ToString("F2") + " Byte"; else if (size >= 1024 && size < 1048576) sizeStr = (size / 1024).ToString("F2") + " K"; else if (size >= 1048576 && size < 1073741824) sizeStr = (size / 1024 / 1024).ToString("F2") + " M"; else if (size >= 1073741824) sizeStr = (size / 1024 / 1024 / 1024).ToString("F2") + " G"; control.Text = sizeStr; }

实现效果:

以上就是爱惜日网»字符串压缩c语言(用c语言实现字符串压缩)的相关内容了,更多精彩请关注作者:爱惜日号SEO专员

声明:本文由爱惜日网/爱惜日号作者编辑发布,更多技术关注!

相关内容

热门资讯

世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
春风一拂千山绿 春风轻拂千山绿... 新春对联欣赏1、天意无常顺子自然,万般皆苦唯有自渡。2、门迎百福吉星照,户纳千祥鸿运开。3、一门天赐...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...