C#MemoryStream을 사용하여 바이너리 내용을 압축합니다(String, 이미지 등).

네트워크에서 통신을 할 때 압축 통신은 전송 효율에 있어 매우 중요하다. 특히 전송할 내용이 비교적 복잡할 때.다음은 String 객체를 압축하는 예를 들어 임의의 객체를 압축하고 압축하는 방법(어떤 객체든 byte 흐름으로 서열화할 수 있음)을 설명합니다.
먼저 압축 클래스를 설정합니다.
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

using System.IO.Compression;

 

namespace Felomeng

{

    public class MyZip

    {

 

        public static MemoryStream Compress(byte[] inBytes)

        {

            MemoryStream outStream = new MemoryStream();

            using (MemoryStream intStream = new MemoryStream(inBytes))

            {

                using (GZipStream Compress =

                    new GZipStream(outStream,

                    CompressionMode.Compress))

                {

                    intStream.CopyTo(Compress);

                }

            }

            return outStream;

        }

 

        public static byte[] Decompress(MemoryStream inStream)

        {

            byte[] result = null;

            MemoryStream compressedStream = new MemoryStream(inStream.ToArray());

            using (MemoryStream outStream = new MemoryStream())

            {

                using (GZipStream Decompress = new GZipStream(compressedStream,

                        CompressionMode.Decompress))

                {

                    Decompress.CopyTo(outStream);

                    result = outStream.ToArray();

                }

            }

            return result;

        }

    }

}

사용법은 다음과 같습니다.
String myString = "testCompress", // string

result;//  

MemoryStream outFile = new MemoryStream();//outFile , 

outFile = Compress(Encoding.UTF8.GetBytes(myString));//  

result = Encoding.UTF8.GetString(Decompress(outFile));//  

더 좋은 압축 결과를 얻으려면 시스템이 제공하는 GZipStream보다 더 좋은 압축 알고리즘을 사용할 수 있다.
클릭하여 링크 열기

좋은 웹페이지 즐겨찾기