Подскажите, как "сжимать" текстовые переменные

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

euroflock
Обычный пользователь
Обычный пользователь
 
Сообщения: 68
Зарегистрирован: 26.02.2009 (Чт) 12:54

Подскажите, как "сжимать" текстовые переменные

Сообщение euroflock » 26.02.2009 (Чт) 13:03

Помогите со сжатием строковых переменных. По форуму ничего об этом не нашел - только сжатие файлов и всё.
Задача состоит не в сжатии файлов методами сжатия потоков, о чем написано везде и много, а в том, чтобы сжать (архивировать, уплотнить или др.) текстовое значение строковой переменной в другую переменную... а затем, конечно же и восстановить обратно. Спасибо (заранее).
Последний раз редактировалось euroflock 26.02.2009 (Чт) 14:19, всего редактировалось 1 раз.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Подскажите, как "сжимать" текстовые переменные

Сообщение Viper » 26.02.2009 (Чт) 13:09

А какая принципиальная разница между сжатием файлов и сжатием строк? И там и, там в итоге сжимается поток байт.
Весь мир матрица, а мы в нем потоки байтов!

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Подскажите, как "сжимать" текстовые переменные

Сообщение iGrok » 26.02.2009 (Чт) 13:16

euroflock писал(а):Помогите со сжатием строковых переменных. По форуму ничего об этом не нашел - только сжатие файлов и всё.
Задача состоит не в сжатии файлов методами сжатия потоков, о чем написано везде и много, а в том, чтобы сжать (архивировать, уплотнить или др.) текстовое значение строковой переменной в другую переменную... а затем, конечно же и восстановить обратно. Спасибо (заранее).

Абсолютно точно так же, как и файлы, и потоки.

Только не понятно, зачем?
label:
cli
jmp label

euroflock
Обычный пользователь
Обычный пользователь
 
Сообщения: 68
Зарегистрирован: 26.02.2009 (Чт) 12:54

Re: Подскажите, как "сжимать" текстовые переменные

Сообщение euroflock » 26.02.2009 (Чт) 13:29

Код: Выделить всё
Sub CompressFile(ByVal path As String)
        If Not File.Exists(path) Then
            Exit Sub
        End If
        Dim sourceFile As FileStream = File.OpenRead(path)
        Dim destinationFile As FileStream = File.Create(path + ".zip")
        Dim buffer(sourceFile.Length - 1) As Byte
        sourceFile.Read(buffer, 0, buffer.Length)
        Using output As New GZipStream(destinationFile, CompressionMode.Compress)
            output.Write(buffer, 0, buffer.Length)
        End Using
        'TextBox1.Text = destinationFile.ToString
        sourceFile.Close()
        destinationFile.Close()
End Sub



Код: Выделить всё
Sub UncompressFile(ByVal path As String)
        Dim sourceFile As FileStream = File.OpenRead(path)
        Dim destinationFile As FileStream = File.Create(path + ".uncompress")
        Dim buffer(4096) As Byte
        Dim n As Integer
        Using input As New GZipStream(sourceFile, CompressionMode.Decompress, False)
            n = input.Read(buffer, 0, buffer.Length)
            destinationFile.Write(buffer, 0, n)
        End Using
        sourceFile.Close()
        destinationFile.Close()
    End Sub



Вот так сжимаются файлы в потоке при записи. А как "точно так же" сжать строковую переменную?
Зачем? - это уже совсем другой вопрос, а реализация необходима.
Просто прошу помочь, так как с этим дела не имел, а нужно.
[Viper] :: Во-первых, пользуемся тэгом CODE для выделения кода. А, во-вторых, переезжаем в нужный раздел.
Последний раз редактировалось euroflock 26.02.2009 (Чт) 14:01, всего редактировалось 1 раз.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Подскажите, как "сжимать" текстовые переменные

Сообщение tyomitch » 26.02.2009 (Чт) 13:32

.нет в другом месте.
Изображение

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Подскажите, как "сжимать" текстовые переменные

Сообщение Williams » 26.02.2009 (Чт) 13:46

Сначала нужно получить байты из текста в нужной кодировке (System.Text.Encoding.UTF8.GetBytes) и сжать их
И вы думаете, что вас оставят в живых после прочтения этого поста?

euroflock
Обычный пользователь
Обычный пользователь
 
Сообщения: 68
Зарегистрирован: 26.02.2009 (Чт) 12:54

Re: Подскажите, как "сжимать" текстовые переменные

Сообщение euroflock » 26.02.2009 (Чт) 13:48

...сам не заметил, как вопрос уже и переехал в раздел .NET

А не трудно ли будет советующим просто разместить маленький работающий код (сжатие/восстановление)?

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Подскажите, как "сжимать" текстовые переменные

Сообщение Williams » 26.02.2009 (Чт) 13:59

euroflock писал(а):А не трудно ли будет советующим просто разместить маленький работающий код (сжатие/восстановление)?


Держи сжатие:

Код: Выделить всё
        Dim ms As MemoryStream = New MemoryStream

        Dim buff() As Byte = System.Text.Encoding.UTF8.GetBytes("MyText")

        Dim output As GZipStream = New GZipStream(ms, CompressionMode.Compress)
        output.Write(buff, 0, buff.Length)


Далее можно, к примеру, ms.ToArray()

Да, чуть не забыл, если все же будешь хранить в строках, то надо будет закодировать сжатый массив в Base64.
И вы думаете, что вас оставят в живых после прочтения этого поста?


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 91

    TopList  
cron