首页 > 编程 > C# > 正文

C#自定义字符串压缩和解压缩的方法

2020-01-24 02:03:53
字体:
来源:转载
供稿:网友

本文实例讲述了C#自定义字符串压缩和解压缩的方法。分享给大家供大家参考。具体如下:

class ZipLib{ public static string Zip(string value) {  //Transform string into byte[]   byte[] byteArray = new byte[value.Length];  int indexBA = 0;  foreach (char item in value.ToCharArray())  { byteArray[indexBA++] = (byte)item;  }  //Prepare for compress  System.IO.MemoryStream ms = new System.IO.MemoryStream();  System.IO.Compression.GZipStream sw = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Compress);  //Compress  sw.Write(byteArray, 0, byteArray.Length);  //Close, DO NOT FLUSH cause bytes will go missing...  sw.Close();  //Transform byte[] zip data to string  byteArray = ms.ToArray();  System.Text.StringBuilder sB = new System.Text.StringBuilder(byteArray.Length);  foreach (byte item in byteArray)  { sB.Append((char)item);  }  ms.Close();  sw.Dispose();  ms.Dispose();  return sB.ToString(); } public static string UnZip(string value) {  //Transform string into byte[]  byte[] byteArray = new byte[value.Length];  int indexBA = 0;  foreach (char item in value.ToCharArray())  { byteArray[indexBA++] = (byte)item;  }  //Prepare for decompress  System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArray);  System.IO.Compression.GZipStream sr = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Decompress);  //Reset variable to collect uncompressed result  byteArray = new byte[byteArray.Length];  //Decompress  int rByte = sr.Read(byteArray, 0, byteArray.Length);  //Transform byte[] unzip data to string  System.Text.StringBuilder sB = new System.Text.StringBuilder(rByte);  //Read the number of bytes GZipStream red and do not a for each bytes in  //resultByteArray;  for (int i = 0; i < rByte; i++)  { sB.Append((char)byteArray[i]);  }  sr.Close();  ms.Close();  sr.Dispose();  ms.Dispose();  return sB.ToString(); }}

代码使用方法:

string str_org="aaaaaaaaaabbbbbbbbbbbbcccccccccdddddddd";string str_comp = ZipLib.Zip(str_org);Console.WriteLine("str_comp:" + str_comp);string str_uncomp = ZipLib.UnZip(str_comp);Console.WriteLine("str_uncomp:" + str_uncomp);Console.ReadLine();

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表