2013-04-17 3 views
1

Я хочу написать метод на C#, который принимает байт [] и сжимает его на другой байт [], но все, что я могу найти, это библиотеки, которые сжимают из каталог в другой каталог (ZipFile library).Я хочу сжать байт [] и вернуть байт []

Можно ли использовать только платформу .NET?

ответ

5

Можно ли использовать только платформу .NET?

Уверенный - это именно то, для чего используется пространство имен System.IO.Compression. Например, вы можете использовать класс GZipStream. Для получения сжатых данных используйте MemoryStream, а затем вы можете позвонить по телефону ToArray.

Пример кода (непроверенные):

public static byte[] Compress(byte[] data) 
{ 
    using (var output = new MemoryStream()) 
    { 
     using (var compression = new GZipStream(output, CompressionMode.Compress)) 
     { 
      compression.Write(data, 0, data.Length); 
     } 
     return output.ToArray(); 
    } 
} 

public static byte[] Compress(byte[] data) 
{ 
    using (var output = new MemoryStream()) 
    { 
     using (var compression = new GZipStream(output, CompressionMode.Decompress)) 
     { 
            compression.Write(data, 0, data.Length); 
        } 
     return output.ToArray(); 
    } 
} 

Вы можете также использовать DeflateStream в качестве альтернативной формы сжатия.

Смежные вопросы