C#自定义字符串压缩和解压缩的方法
本文实例讲述了C#自定义字符串压缩和解压缩的方法。分享给大家供大家参考。具体如下:
classZipLib { publicstaticstringZip(stringvalue) { //Transformstringintobyte[] byte[]byteArray=newbyte[value.Length]; intindexBA=0; foreach(chariteminvalue.ToCharArray()) { byteArray[indexBA++]=(byte)item; } //Prepareforcompress System.IO.MemoryStreamms=newSystem.IO.MemoryStream(); System.IO.Compression.GZipStreamsw=newSystem.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Compress); //Compress sw.Write(byteArray,0,byteArray.Length); //Close,DONOTFLUSHcausebyteswillgomissing... sw.Close(); //Transformbyte[]zipdatatostring byteArray=ms.ToArray(); System.Text.StringBuildersB=newSystem.Text.StringBuilder(byteArray.Length); foreach(byteiteminbyteArray) { sB.Append((char)item); } ms.Close(); sw.Dispose(); ms.Dispose(); returnsB.ToString(); } publicstaticstringUnZip(stringvalue) { //Transformstringintobyte[] byte[]byteArray=newbyte[value.Length]; intindexBA=0; foreach(chariteminvalue.ToCharArray()) { byteArray[indexBA++]=(byte)item; } //Preparefordecompress System.IO.MemoryStreamms=newSystem.IO.MemoryStream(byteArray); System.IO.Compression.GZipStreamsr=newSystem.IO.Compression.GZipStream(ms,System.IO.Compression.CompressionMode.Decompress); //Resetvariabletocollectuncompressedresult byteArray=newbyte[byteArray.Length]; //Decompress intrByte=sr.Read(byteArray,0,byteArray.Length); //Transformbyte[]unzipdatatostring System.Text.StringBuildersB=newSystem.Text.StringBuilder(rByte); //ReadthenumberofbytesGZipStreamredanddonotaforeachbytesin //resultByteArray; for(inti=0;i<rByte;i++) { sB.Append((char)byteArray[i]); } sr.Close(); ms.Close(); sr.Dispose(); ms.Dispose(); returnsB.ToString(); } }
代码使用方法:
stringstr_org="aaaaaaaaaabbbbbbbbbbbbcccccccccdddddddd"; stringstr_comp=ZipLib.Zip(str_org); Console.WriteLine("str_comp:"+str_comp); stringstr_uncomp=ZipLib.UnZip(str_comp); Console.WriteLine("str_uncomp:"+str_uncomp); Console.ReadLine();
希望本文所述对大家的C#程序设计有所帮助。