真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP編碼gzdeflate與Golang解碼DEFLATE

8月7日@黃同學(xué)找我問:“數(shù)據(jù)存到redis是gzdeflate壓縮過的數(shù)據(jù),golang從redis取出來(lái),解壓縮失敗”。很多從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é)查看。


本文標(biāo)題:PHP編碼gzdeflate與Golang解碼DEFLATE
網(wǎng)站路徑:http://weahome.cn/article/pcsgcc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部