0
我需要解壓縮一個用zlib壓縮的git對象。雖然該對象是用zlib壓縮的,但它沒有標題(爲了節省帶寬,我猜)。所以我試圖在對象字節的頂部添加標題,但由於某些原因,zlib仍然抱怨標題無效。我懷疑頭字節被添加爲字符串文字而不是字節,但我不知道。請參閱下面的代碼。如何解決沒有標題的zlib文件?
package main
import(
"compress/zlib"
"io/ioutil"
"bytes"
"fmt"
// "strings"
)
func main(){
b, err := ioutil.ReadFile("raw")
if err !=nil{
panic(err)
}
const header = "\x1f\x8b\x08\x00\x00\x00\x00\x00"
buf := bytes.NewBuffer(nil)
if _, err := buf.WriteString(header); err !=nil{
panic(err)
}
if _, err := buf.Write(b); err !=nil{
panic(err)
}
r, err := zlib.NewReader(buf)
if err !=nil{
panic(err)
}
defer r.Close()
var db []byte
if _, err := r.Read(db); err !=nil{
panic(err)
}
fmt.Printf("%s", db)
}
錯誤
panic: zlib: invalid header
goroutine 1 [running]:
main.main()
/Users/themihai/test/main.go:27 +0x29e
exit status 2
你從哪裏得到該標題值?大多數zlib頭文件以0x78開始,並且只有兩個字節長。有關更多詳細信息,請參閱http://stackoverflow.com/questions/9050260/what-does-a-zlib-header-look-like。 – djd