using System;
using System.IO;
using System.IO.Compression;
// 文字列をバイナリーに符号化し、Base64で変換する
public static string compress(string src)
{
string encodedString = null;
byte[] byteArraySource = Encoding.Unicode.GetBytes(src);
using (var memStream = new MemoryStream())
using (var compressedStream = new DeflateStream(memStream, CompressionMode.Compress))
{
compressedStream.Write(byteArraySource, 0, byteArraySource.Length);
compressedStream.Close();
encodedString = System.Convert.ToBase64String(memStream.ToArray());
}
return encodedString;
}
// Base64の文字列をバイナリ―に変換し、それを復号化する。
public static string deCompress(string encodedStr)
{
string decodedString = null;
byte[] byteArray = System.Convert.FromBase64String(encodedStr);
using (var memStream = new MemoryStream(byteArray))
using (var decompressedStream = new DeflateStream(memStream, CompressionMode.Decompress))
{
byte[] resBytes = new byte[4096];
int count = 0;
int offset = 0;
while (true)
{
count = decompressedStream.Read(resBytes, offset, resBytes.Count() – offset);
if (count == 0) break;
offset += count;
decodedString = Encoding.Unicode.GetString(resBytes);
}
}
string trimStr = decodedString.TrimEnd(new char[]{(char)0});
return trimStr;
}