英文:
PHP gzdeflate/gzinflate functionality on Golang
问题
我需要在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)
}
我得到了不同的结果。
英文:
I need to implement gzdeflate/gzinflate functions in go
(compress level 9)
<?php $z = gzdeflate($str, 9); ?>
My current Go realisation looks like this:
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)
}
I receive different results
答案1
得分: 1
测试的重点不在于压缩结果是否完全相同,而在于压缩后再解压是否能得到与原始数据完全相同的结果,无论压缩器或解压器的实现方式如何。例如,你应该能够将压缩后的数据从Go传递到PHP,或者反过来,然后在那里进行解压缩,得到与原始输入完全相同的结果。
英文:
The test is not wether the result of compression is identical or not. The test is whether compression followed by decompression results in the exact same thing as what you started with, regardless of where or how the compressor or decompressor is implemented. E.g. you should be able to pass the compressed data from Go to PHP or vice versa, and have the decompression there give the original input exactly.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论