VB.NET:解压缩一个字符串,通过PHP压缩

时间:2014-10-31 07:44:42

标签: php vb.net gzip compression gzipstream

我有一个PHP脚本,它向我发送这样的信息:

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

我从HTTP-Request获取此字符串。

这是我进入VB.NET的原因:

H4sIAAAAAAACC/NIzMnJVwhPzSkBAHUUKFAKAAAA

每次尝试在System.IO.Compression.GZipStream的帮助下解压缩它似乎都不起作用。

任何人都可以帮助我吗?提前谢谢。

1 个答案:

答案 0 :(得分: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之间的所有值,从而使其非常适合发送。