Golang上的PHP gzdeflate / gzinflate功能

时间:2015-12-17 10:59:54

标签: php go gzip

我需要在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)
}

我收到不同的结果

1 个答案:

答案 0 :(得分:1)

测试不是压缩的结果是否相同。无论压缩器或解压缩器的实现位置和方式如何,压缩和随后的解压缩都会产生与开始时完全相同的测试。例如。你应该能够将压缩数据从Go传递给PHP,反之亦然,然后让解压缩完全给出原始输入。