VB.NET: распаковать строку, сжатую из PHP через

У меня есть PHP-скрипт, который отправляет мне такую ​​информацию:

$output = base64_encode(gzencode('Hallo Welt',9));

Я получаю это из HTTP-запроса в строку.

Вот что я получаю в VB.NET:

H4sIAAAAAAACC/NIzMnJVwhPzSkBAHUUKFAKAAAA

Каждая попытка распаковать это с помощью System.IO.Compression.GZipStream просто не похоже на работу.

Кто-нибудь может мне помочь, пожалуйста! Заранее спасибо.

0

Решение

Как я уже писал в своем комментарии: PHP-код сначала сжимает ваш текст с помощью GZip, но затем также преобразует полученные байты в строку base64. Прежде чем вы сможете распаковать это, вам нужно обратить вспять процесс base64. Вот как это работает в VB:

'Convert base64 string to byte array
Dim bytes As Byte() = System.Convert.FromBase64String("H4sIAAAAAAACC/NIzMnJVwhPzSkBAHUUKFAKAAAA")

'Standard GZipStream code for decompression
Using ms As New IO.MemoryStream(bytes)
Using gzs As New System.IO.Compression.GZipStream(ms, IO.Compression.CompressionMode.Decompress)
Using rdr As New IO.StreamReader(gzs)
Console.WriteLine(rdr.ReadToEnd)
End Using 'rdr
End Using 'gzs
End Using 'ms
Console.ReadKey()

Он снова создает вашу входную строку «Hallo Welt».

Преобразование байтового массива в base64 при отправке его по текстовой системе является хорошей идеей, поскольку у вас нет проблем с кодировкой текста и непечатными символами. Base64 использует печатаемое подмножество символов для представления всех значений от 0 до 255, что делает его довольно идеальным для отправки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector