我需要在go中实现gzdeflate/gzinflate函数(压缩级别9)我当前的Go实现如下所示:funcgzdeflate(strstring)string{varbbytes.Bufferw,_:=gzip.NewWriterLevel(&b,9)w.Write([]byte(str))w.Close()returnb.String()}funcgzinflate(strstring)string{b:=bytes.NewReader([]byte(str))r,_:=gzip.NewReader(b)bb2:=new(bytes.Buffer)_,_=io.Copy(bb2,r
在PHP手册中有一条关于gzdeflate的评论说:gzcompressproduceslongerdatabecauseitembedsinformationabouttheencodingontothestring.Ifyouarecompressingdatathatwillonlyeverbehandledononemachine,thenyoudon'tneedtoworryaboutwhichofthesefunctionsyouuse.However,ifyouarepassingdatacompressedwiththesefunctionstoadifferentma
也就是说,测试我是否可以安全地gzinflate字符串。如果我的压缩数据被篡改,我会收到“错误数据”警告。我不想抑制警告,这意味着我要么必须捕获它,要么测试它是否可以gzinflated。后者是我的首选解决方案,但我不知道该怎么做。适合下面代码示例的内容将是完美的:if(i_can_haz_inflate($data)){//goahead$source=gzinflate($data);}else{//baddata}编辑:在指定gz(de|in)flate之后,我开始意识到我实际上并不太在意压缩算法。有没有更适合在尝试减压之前检查完整性的方法? 最佳答案