сжатие строк gzip'om
От: lumf  
Дата: 12.07.06 14:11
Оценка:
необходимо сжать\разжать строку. вроде как начал двигаться в сторону вот этой тулзы ICSharpCode.SharpZipLib.dll


но там я так понял все для работы с файлами архивов.

куда копать? или кто готовый примерчик кинет?

всем спасибо
Сиськи и процессоры
Re: сжатие строк gzip'om
От: denisio_mcp  
Дата: 12.07.06 14:20
Оценка: 1 (1)
Здравствуйте, lumf, Вы писали:

L>необходимо сжать\разжать строку. вроде как начал двигаться в сторону вот этой тулзы ICSharpCode.SharpZipLib.dll

L>но там я так понял все для работы с файлами архивов.

В dot.net 2.0 есть класс GZipCompression и в мсдн есть примеры.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: сжатие строк gzip'om
От: lumf  
Дата: 13.07.06 05:25
Оценка:
Здравствуйте, denisio_mcp, Вы писали:

_>Здравствуйте, lumf, Вы писали:


L>>необходимо сжать\разжать строку. вроде как начал двигаться в сторону вот этой тулзы ICSharpCode.SharpZipLib.dll

L>>но там я так понял все для работы с файлами архивов.

_>В dot.net 2.0 есть класс GZipCompression и в мсдн есть примеры.


эх. забыл сказать, что не 2.0 у меня
Сиськи и процессоры
Re[2]: сжатие строк gzip'om
От: cadet354 Россия
Дата: 13.07.06 06:31
Оценка:
Здравствуйте, denisio_mcp, Вы писали:

_>Здравствуйте, lumf, Вы писали:


L>>необходимо сжать\разжать строку. вроде как начал двигаться в сторону вот этой тулзы ICSharpCode.SharpZipLib.dll

L>>но там я так понял все для работы с файлами архивов.
не совсем, скорее на потоки, т.е. строку оборачиваешь например в MemoryStream
using (MemoryStream ms = new MemoryStream(Encoding.Default.GetBytes(s))){}

и потом ее декодируешь.
пример к сожалению привести не могу, т.к. использовался в fw 2.0 ( про GZipCompression тогда и не подозревал )




_>В dot.net 2.0 есть класс GZipCompression и в мсдн есть примеры.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: сжатие строк gzip'om
От: Mr Muskul  
Дата: 13.07.06 06:36
Оценка:
Вот работающий пример
                /// <summary>
                /// Сериализация объекта и его запаковка
                /// </summary>
                /// <param name="obj"></param>
                /// <returns></returns>
                public static byte[] Packing(object obj)
                {
                        SoapFormatter ser = new SoapFormatter();
                        MemoryStream mem = new MemoryStream();
                        ser.Serialize(mem, obj);

                        MemoryStream baseMem = new MemoryStream();
                        ZipOutputStream zip = new ZipOutputStream(baseMem);
                        zip.SetLevel(9);

                        ZipEntry entry = new ZipEntry("file");

                        entry.DateTime = DateTime.Now;
                        entry.Size = mem.Length;

                        Crc32 crc = new Crc32();
                        crc.Reset();
                        crc.Update(mem.ToArray());
                        entry.Crc  = crc.Value;
                        zip.PutNextEntry(entry);
                        zip.Write(mem.ToArray(), 0, (int)mem.Length);
                        zip.Close();
                        return baseMem.ToArray();
                }

                /// <summary>
                /// распаковка объекта и его дисериализация
                /// </summary>
                /// <param name="obj"></param>
                /// <returns></returns>
                public static object UnPacking(byte[] zipData)
                {
                        MemoryStream mem        = new MemoryStream(zipData);

                        ZipEntry theEntry;
                        ZipInputStream zip                = new ZipInputStream(mem);
                        MemoryStream baseMem        = new MemoryStream();
                        while((theEntry = zip.GetNextEntry()) != null)
                        {
                                int size = 2048;
                                byte[] data = new byte[2048];
                                while(true)
                                {
                                        size = zip.Read(data, 0, data.Length);
                                        if(size > 0)
                                                baseMem.Write(data, 0, size);
                                        else
                                                break;
                                }
                        }
                        zip.Close();

                        SoapFormatter ser = new SoapFormatter();
                        mem = new MemoryStream(baseMem.ToArray());
                        return ser.Deserialize(mem);
                }
Re[2]: сжатие строк gzip'om
От: lumf  
Дата: 13.07.06 07:02
Оценка:
Здравствуйте, Mr Muskul, Вы писали:

MM>Вот работающий пример



а что zip и gzip это одно и тоже?
Сиськи и процессоры
Re[3]: сжатие строк gzip'om
От: Mr Muskul  
Дата: 13.07.06 08:04
Оценка:
Здравствуйте, lumf, Вы писали:

L>Здравствуйте, Mr Muskul, Вы писали:


MM>>Вот работающий пример



L>а что zip и gzip это одно и тоже?


не совсем, в любом случае тебе нужно решить конкретную задачку "необходимо сжать\разжать строку. вроде как начал двигаться в сторону вот этой тулзы ICSharpCode.SharpZipLib.dll"

вот тебе решение
Re[4]: сжатие строк gzip'om
От: lumf  
Дата: 13.07.06 08:11
Оценка:
L>Здравствуйте, Mr Muskul, Вы писали:

MM>>Вот работающий пример



L>а что zip и gzip это одно и тоже?


не совсем, в любом случае тебе нужно решить конкретную задачку "необходимо сжать\разжать строку. вроде как начал двигаться в сторону вот этой тулзы ICSharpCode.SharpZipLib.dll"

так то оно так, но смотри сабж. мне нужно это реализовать gzipom
Posted via RSDN NNTP Server 2.0
Сиськи и процессоры
Re[5]: сжатие строк gzip'om
От: desco США http://v2matveev.blogspot.com
Дата: 13.07.06 08:33
Оценка:
Здравствуйте, lumf, Вы писали:

L>>Здравствуйте, Mr Muskul, Вы писали:


MM>>>Вот работающий пример



L>>а что zip и gzip это одно и тоже?


L> не совсем, в любом случае тебе нужно решить конкретную задачку "необходимо сжать\разжать строку. вроде как начал двигаться в сторону вот этой тулзы ICSharpCode.SharpZipLib.dll"


L> так то оно так, но смотри сабж. мне нужно это реализовать gzipom


можно сделать так, с использованием все той же SharpZipLib
      string srcString = "...";
      
      byte[] srcBytes = Encoding.UTF8.GetBytes(srcString);
      
      MemoryStream compressedStream = new MemoryStream();
      using (GZipOutputStream outStream = new GZipOutputStream(compressedStream))
      {
        outStream.Write(srcBytes, 0, srcBytes.Length);
      }

      byte[] compressedBytes = compressedStream.ToArray();
      
      compressedStream = new MemoryStream(compressedBytes);
      MemoryStream targetStream = new MemoryStream();
      
      using (GZipInputStream inStream = new GZipInputStream(compressedStream))
      {
        byte[] buffer = new byte[2048];
        int bytesRead;
        while ((bytesRead = inStream.Read(buffer, 0, buffer.Length)) > 0)
        {
          targetStream.Write(buffer, 0, bytesRead);
        }
      }

      string resultString = Encoding.UTF8.GetString(targetStream.ToArray());
Re[6]: сжатие строк gzip'om
От: lumf  
Дата: 13.07.06 08:52
Оценка:
Здравствуйте, desco, Вы писали:

спасибо. то что надо
Сиськи и процессоры
Re: сжатие строк gzip'om
От: Nisus  
Дата: 13.07.06 09:08
Оценка:
здесь
сжатие строк gzip'om
От: Аноним  
Дата: 13.07.06 06:49
Оценка:
Сжатие строк? Это очень просто!
Сжатие строк с помощью J#? Это очень просто!


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.