string hash = "H4sIAAAAAAAACqxZW5OiyrJ+7....."; // GZip em Base64
MemoryStream compressedFileStream = new MemoryStream(Convert.FromBase64String(hash));
FileStream outputFileStream = File.Create(@"teste1.xml");
var decompressor = new GZipStream(compressedFileStream, CompressionMode.Decompress);
decompressor.CopyTo(outputFileStream);
Observação: É necessário utilizar os pacotes:
using System.IO;
using System.IO.Compression;
procedure DecompressGZip(ACompressedBase64: String; ADestination: TStream);
var
LInput: TStream;
LUnZip: TZDecompressionStream;
var
vBytes: TBytes;
begin
vBytes := TEncoding.UTF8.GetBytes( ACompressedBase64 );
// Converte de base64 para Stream de bytes
LInput := TBytesStream.Create( TNetEncoding.Base64.Decode( vBytes ) );
try
// Descompacta 15 + 16 define 31 bits que corresponte a GZip
LUnZip := TZDecompressionStream.Create(LInput, 15 + 16);
try
// Copia para variavel destino.
ADestination.CopyFrom(LUnZip, 0);
finally
LUnZip.Free;
end;
finally
// Free the streams
LInput.Free;
end;
end;
Observação: É necessário utilizar as units:
System.NetEncoding
System.ZLib