我需要在go
中实现gzdeflate / gzinflate函数(压缩级别9)
<?php $z = gzdeflate($str, 9); ?>
我目前的Go实现如下:
func gzdeflate(str string) string {
var b bytes.Buffer
w, _ := gzip.NewWriterLevel(&b, 9)
w.Write([]byte(str))
w.Close()
return b.String()
}
func gzinflate(str string) string {
b := bytes.NewReader([]byte(str))
r, _ := gzip.NewReader(b)
bb2 := new(bytes.Buffer)
_, _ = io.Copy(bb2, r)
r.Close()
byts := bb2.Bytes()
return string(byts)
}
我收到不同的结果
答案 0 :(得分:1)
测试不是压缩的结果是否相同。无论压缩器或解压缩器的实现位置和方式如何,压缩和随后的解压缩都会产生与开始时完全相同的测试。例如。你应该能够将压缩数据从Go传递给PHP,反之亦然,然后让解压缩完全给出原始输入。