Golang、python關於壓縮和解壓的解釋。

golang中,存在python

"compress/zlib"

這個包,裏面包含各壓縮解壓的各項設置,好比壓縮級別/壓縮速度。golang

好比 zlib包裏面的常量以下:code

const (
    NoCompression      = flate.NoCompression //無壓縮
    BestSpeed          = flate.BestSpeed  //壓縮速度最快
    BestCompression    = flate.BestCompression //壓縮率最高
    DefaultCompression = flate.DefaultCompression//默認壓縮
)

壓縮速度和壓縮率這兩個是一個相互矛盾的過程,這裏面的取捨仍是須要各位去仔細甄別使用場景。utf-8

 

func main() {

   b := []byte(`china GO GO !!!的大蘇打`)
   fmt.Println(string(zlibUnress(zibpress(b))))

}
func zibpress(src []byte) []byte { //應該加上異常處理
   b := new(bytes.Buffer)
   w := zlib.NewWriter(b)
   w.Write(src)
   w.Close()
   return b.Bytes()

}
func zlibUnress(src []byte) []byte { //應該加上異常處理
   b := bytes.NewReader(src)
   r, _ := zlib.NewReader(b)
   undata, err := ioutil.ReadAll(r) #建議io.copy 或者切片讀取,這樣會提升速度。
   if err != nil {
      return nil
   }
   defer r.Close()
   return undata
}

 

而在python中,壓縮解壓代碼很是簡潔。get

import zlib
a=zlib.compress("china GO GO !!!的大蘇打".encode('utf-8'))
print(a)
b=zlib.decompress(a)
print(str(b,encoding='utf-8') )
相關文章
相關標籤/搜索