Сжатие и распаковка строки с помощью zlib.net в С#C#

Место общения программистов C#
Ответить
Anonymous
 Сжатие и распаковка строки с помощью zlib.net в С#

Сообщение Anonymous »

Я использую zlib.net в C# для сжатия и распаковки строк.

Это мой код

Код: Выделить всё

class GZOutputStream : ZOutputStream
{
public GZOutputStream(Stream in_Renamed) : base(in_Renamed)
{
byte[] dictionary = System.Text.ASCIIEncoding.ASCII.GetBytes(sDictionary);
z.inflateSetDictionary(dictionary, dictionary.Length);
}

public GZOutputStream(Stream in_Renamed, int level) : base(in_Renamed, level)
{
byte[] dictionary = System.Text.ASCIIEncoding.ASCII.GetBytes(sDictionary);
z.deflateSetDictionary(dictionary, dictionary.Length);
}
}

public static byte[] compressString(string source)
{
byte[] buffer = System.Text.Encoding.Default.GetBytes (source);

MemoryStream memOutput = new MemoryStream ();
GZOutputStream zipOut   = new GZOutputStream(memOutput, zlibConst.Z_DEFAULT_COMPRESSION);

zipOut.Write(buffer, 0, buffer.Length);
zipOut.finish();

memOutput.Seek(0, SeekOrigin.Begin);
byte[] result = memOutput.ToArray();

return result;
}

public static byte[] deCompressString(string source)
{
byte[] buffer = System.Text.Encoding.Default.GetBytes (source);
MemoryStream memOutput = new MemoryStream ();
GZOutputStream zipOut   = new GZOutputStream(memOutput);

zipOut.Write(buffer, 0, buffer.Length);
zipOut.finish();

memOutput.Seek(0, SeekOrigin.Begin);
byte[] result = memOutput.ToArray();

return result;
}
Когда я сжимаю строку, она работает хорошо. Однако когда я распаковываю результирующую строку функции сжатия, возникает исключение:


ZStreamException: раздувание:

zlib.ZOutputStream.Write (System.Byte[] b1, Int32 off, Int32 len)


Итак, каково решение?< /п>

Подробнее здесь: https://stackoverflow.com/questions/315 ... in-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»