欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-12 14:47:22
本文实例讲述了c#自定义字符串压缩和解压缩的方法。分享给大家供大家参考。具体如下: class ziplib { public static string...

本文实例讲述了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#程序设计有所帮助。

上一篇:

下一篇: