[英]Different byte array for same string in golang and python
我正在使用 python gzip 模块压缩字符串并在 golang 中解压缩相同的字符串。
在python中压缩字符串的模块:
gzip.compress(json.dumps("hello").encode(),-1)
用于在 golang 中解压缩相同内容的模块:
func Decompression(compData []byte) ([]byte, error) {
gr, err := gzip.NewReader(bytes.NewBuffer(compData))
if err != nil {
return compData, err
}
defer gr.Close()
data, err := ioutil.ReadAll(gr)
if err != nil {
return nil, err
}
return data, err
}
获取错误: Gzip:invalid header
压缩和解压缩时使用相同的压缩级别。
任何人都可以指出我正在做的错误吗?
我试图重现,用这个代码(python3)来生成文件out.bin
:
import gzip
import json
with open('out.bin', 'wb') as f:
f.write(gzip.compress(json.dumps("hello").encode(), -1))
print(json.dumps("hello"))
和这段代码来读取文件并解压缩它(它使用你的Decompression
功能:
package main
import (
"bytes"
"compress/gzip"
"fmt"
"io/ioutil"
)
func Decompression(compData []byte) ([]byte, error) {
gr, err := gzip.NewReader(bytes.NewBuffer(compData))
if err != nil {
return compData, err
}
defer gr.Close()
data, err := ioutil.ReadAll(gr)
if err != nil {
return nil, err
}
return data, err
}
func main() {
d, err := ioutil.ReadFile("out.bin")
if err != nil {
panic(err)
}
fmt.Printf("raw data: %q\n", string(d))
data, err := Decompression(d)
if err != nil {
panic(err)
}
fmt.Printf("decompressed: %q\n", string(data))
}
组合工作没有错误。 也许您没有以某种方式从 Python 正确保存文件? 你能在你的数据文件上运行我的 go 代码并显示原始字节吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.