8月7日@黃同學(xué)找我問:“數(shù)據(jù)存到redis是gzdeflate壓縮過的數(shù)據(jù),golang從redis取出來,解壓縮失敗”。很多從PHP轉(zhuǎn)Golang的業(yè)務(wù)經(jīng)常會(huì)遇到,所以寫下這篇博文,希望可以幫助更多人。
想要使用golang解碼php的編碼,那么就應(yīng)該需要知道gzdeflate函數(shù)的算法是什么,先到gzdeflate文檔,查看了一下發(fā)現(xiàn):gzdeflate使用的是純粹的DEFLATE格式
。這就與golang的compress/flate
包一致了。有了了解就可以看著golang文檔實(shí)現(xiàn)代碼了。遂與@黃同學(xué)同學(xué)寫了幾個(gè)函數(shù)進(jìn)行驗(yàn)證,最后定稿如下:
創(chuàng)新互聯(lián)專注于網(wǎng)站建設(shè)|網(wǎng)站建設(shè)維護(hù)|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋門簾等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身制作品質(zhì)網(wǎng)站。
package main import ( "strings" "fmt" "compress/flate" "bytes" "io/ioutil" ) func main() { str:="huangyupeng123" b:=Gzdeflate(str,-1) ss:=Gzencode(string(b)) fmt.Println(ss) /*str:="huangyupeng123" ss:=Gzdeflate(str,0) fmt.Println(ss) s=Gzencode(ss) fmt.Println(s)*/ } // 解碼 func Gzencode(data string) string { r :=flate.NewReader(strings.NewReader(data)) defer r.Close() out, err := ioutil.ReadAll(r) if err !=nil { fmt.Errorf("%s\n",err) } return string(out) } // 編碼 func Gzdeflate(data string,level int) []byte { var bufs bytes.Buffer w,_ :=flate.NewWriter(&bufs,level) w.Write([]byte(data)) w.Flush() w.Close() return bufs.Bytes() } // 編碼 func GzdeflateForString(data string,level int) string { var bufs bytes.Buffer w,_ :=flate.NewWriter(&bufs,level) w.Write([]byte(data)) w.Flush() defer w.Close() return bufs.String() }
經(jīng)過@黃同學(xué)同學(xué)測(cè)試可以正確使用。留下wiki供后續(xù)遇到的同學(xué)查看。
當(dāng)前標(biāo)題:PHP編碼gzdeflate與Golang解碼DEFLATE
網(wǎng)頁(yè)URL:http://www.hntjjpw.com/article22/pcsgcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、電子商務(wù)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)