As I have wrote in my comment: The PHP code first compresses your text using GZip but then also converts the resulting bytes to a base64 string. Before you can decompress this you need to reverse the base64 process. This is how it works in 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()
It produces your input string "Hallo Welt" again.
Converting a byte array to base64 when you send it over a text based system is a good idea, because you don't have problems with text encodings and unprintable characters. Base64 uses a printable subset of symbols to represent all values from 0-255, thus making it pretty perfect for sending.