2014-06-07 2 views
2

Gzip으로 문자열을 압축하려고하며 압축을 풀었지만 예상 한대로 작동하지 않습니다. 내가 "안녕 세계"압축하고 나는 그것을에 "Hello World"를 반환 할 것으로 예상gzip이 예상 출력을 출력하지 않습니다.

s := []byte("hello world") 

    var b bytes.Buffer 
    gz := gzip.NewWriter(&b) 
    defer gz.Close() 
    _, err = gz.Write(s) 
    if err != nil { 
    panic(err) 
    } 

    r, err := gzip.NewReader(&b) 
    defer r.Close() 
    if err != nil { 
    panic(err) 
    } 

    l, _ := r.Read(s) 

    log.Println(l) 

을 압축을 해제 읽기 /하지만 0 반환 곳

내 코드

.. 다음이다 나는 경우, log.Println(r)과 마지막 줄을 l, _ := r.Read(s)을 제거하고 대체 내가 확실히 이해를하게하지 않는이 얻을

&{{ [] 2042-07-14 02:04:00 +0100 CET 255} 0x1847b780 0x185aa000 0x18400db8 0 0 [31 139 8 0 0 9 110 136 0 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] <nil>} 

사람은 explai 수 내가 틀렸어?

내가 원하는 것은 나중에 문자열을 압축하고 압축 해제 된 결과를 반환하는 것입니다.

답변

1

출력 작성을 마칩니다. 예를 들어,

package main 

import (
    "bytes" 
    "compress/gzip" 
    "log" 
) 

func main() { 
    var b bytes.Buffer 

    w := gzip.NewWriter(&b) 
    s := []byte("hello world") 
    _, err := w.Write(s) 
    if err != nil { 
     panic(err) 
    } 
    err = w.Flush() 
    if err != nil { 
     panic(err) 
    } 
    err = w.Close() 
    if err != nil { 
     panic(err) 
    } 

    r, err := gzip.NewReader(&b) 
    if err != nil { 
     panic(err) 
    } 
    defer r.Close() 
    t := make([]byte, len(s)) 
    l, err := r.Read(t) 
    if err != nil { 
     panic(err) 
    } 

    log.Println(l, string(t)) 
} 

출력 :

2009/11/10 23:00:00 11 hello world 
관련 문제