2014-10-31 4 views
0

를 통해 PHP에서 압축 된 문자열, 압축을 나는 이렇게 나에게 정보를 전송하는 PHP 스크립트가 있습니다VB.NET :

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

나는 문자열로 HTTP-요청에서이 얻을.

이 내가 VB.NET으로 무엇을 얻을 수 있습니다 :

H4sIAAAAAAACC/NIzMnJVwhPzSkBAHUUKFAKAAAA

이 모든 그냥 작동하지 않는 것 System.IO.Compression.GZipStream의 도움으로이 압축을 해제하려고합니다.

아무도 도와 줄 수 있습니까? 미리 감사드립니다.

+0

VB에서 출력되는 내용은 무엇입니까? – UnLoCo

+1

문자열이 base64로 인코딩되었음을 확인 했습니까? PHP gzencode는 아마 바이트 배열을 반환 할 것이고, 그 다음 바이트 배열은 전송을위한 base64 문자열로 변환 될 것입니다. 먼저 문자열을 다시 변환하고 ('System.Convert.FromBase64String (stringyouget)'), gzstream을 바이트 배열과 함께 사용하십시오. – Jens

답변

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의 모든 값을 나타내므로 보내기에 매우 적합합니다.