Compress & Decompress


 

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;
}

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中


%d人のブロガーが「いいね」をつけました。