2013-05-17 2 views
0

system.io.compression.gzipstream이 있지만 스트림을 인수로 허용한다는 것을 알고 있습니다.C에서 문자열 압축 및 압축 해제

나는 예를 들어 문자열

을 수용하는 방법을 찾고 있어요.

string compress(string stringtocompress,compressionlevel level); 
string decompress(string stringtodecompress); 
+0

가능한 중복 http://stackoverflow.com/questions/7343465/compression-decompression-string-with -c-sharp) – alxx

답변

13

이 시도해야합니다

using System; 
using System.IO; 
using System.IO.Compression; 
using System.Text; 

... 

public static string Compress(string s) 
{ 
    var bytes = Encoding.Unicode.GetBytes(s); 
    using (var msi = new MemoryStream(bytes)) 
    using (var mso = new MemoryStream()) 
    { 
     using (var gs = new GZipStream(mso, CompressionMode.Compress)) 
     { 
      msi.CopyTo(gs); 
     } 
     return Convert.ToBase64String(mso.ToArray()); 
    } 
} 

public static string Decompress(string s) 
{ 
    var bytes = Convert.FromBase64String(s); 
    using (var msi = new MemoryStream(bytes)) 
    using (var mso = new MemoryStream()) 
    { 
     using (var gs = new GZipStream(msi, CompressionMode.Decompress)) 
     { 
      gs.CopyTo(mso); 
     } 
     return Encoding.Unicode.GetString(mso.ToArray()); 
    } 
} 
[C 번호와 압축/압축 해제 문자열 (의