1 /// <summary>
2 /// 压缩字符串
3 /// </summary>
4 /// <param name="str"></param>
5 /// <returns></returns>
6 public static string Compress(string str)
7 {
8 if (string.IsNullOrEmpty(str))
9 {
10 return "";
11 }
12 byte[] bytes = Encoding.UTF8.GetBytes(str);
13 using (MemoryStream ms = new MemoryStream(1024))
14 {
15 StringBuilder sb = new StringBuilder();
16 using (GZipStream compress = new GZipStream(ms, System.IO.Compression.CompressionMode.Compress))
17 {
18 compress.Write(bytes, 0, bytes.Length);
19 }
20 byte[] byteArray = ms.ToArray();
21 foreach (byte b in byteArray)
22 {
23 sb.Append((char)b);
24 }
25 return sb.ToString();
26 }
27 }
28
29 /// <summary>
30 /// 解压字符串
31 /// </summary>
32 /// <param name="str"></param>
33 /// <returns></returns>
34 public static string Decompress(string str)
35 {
36 if (string.IsNullOrEmpty(str))
37 {
38 return "";
39 }
40 List<byte> bytes = new List<byte>(str.Length);
41 foreach (char c in str)
42 {
43 bytes.Add((byte)c);
44 }
45 using (MemoryStream ms = new MemoryStream(bytes.ToArray()))
46 {
47 using (GZipStream decompress = new GZipStream(ms, System.IO.Compression.CompressionMode.Decompress))
48 {
49 using (StreamReader reader = new StreamReader(decompress))
50 {
51 return reader.ReadToEnd();
52 }
53 }
54 }
55 }