Golang Go语言中关于 flate/gzip/zlib 库的问题求解
Golang Go语言中关于 flate/gzip/zlib 库的问题求解
请问下 golang 应该使用什么压缩库来达到和 PHP 的 gzcompress 一样的压缩效果呢
gzip 应该对应的是 PHP 的 gzencode gzdecode
flate 应该是对应的 PHP 的 gzdeflate
我用了 golang 的 flate gzip zlib 这三个库 压缩出来的结果都和 PHP 的 gzcompress 的不一样 查阅资料应该是使用了 flate 压缩 但是使用的是 zlib 的头 但是不知道该怎么实际操作 希望有大佬帮忙 蟹蟹
更多关于Golang Go语言中关于 flate/gzip/zlib 库的问题求解的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
看 php 文档 gzcompress 对应 zlib 压缩,我用 go 的 zlib 是可以解出来 php 压缩的数据
感谢 我一会儿去试下 解压我是搞定了 就是压缩没搞定 一会儿开电脑试下 谢谢😘
在Go语言中,处理压缩和解压缩任务时,flate
、gzip
和 zlib
这几个包提供了强大的支持。下面是对这三个库的简要说明及常见用途:
-
flate包:
flate
包实现了 DEFLATE 压缩算法,这是 zlib 和 gzip 格式的基础。- 它主要用于创建压缩的 Reader 和 Writer,直接对二进制数据进行 DEFLATE 压缩或解压缩。
- 例如,使用
flate.NewReader
和flate.NewWriter
可以处理原始的 DEFLATE 数据流。
-
gzip包:
gzip
包实现了 gzip 文件格式的压缩和解压缩。- 它适用于处理 gzip 格式的文件或数据流,提供
gzip.NewReader
和gzip.NewWriter
来读取和写入 gzip 文件。 - gzip 格式包含了额外的元数据(如时间戳和压缩级别),适用于需要保存这些信息的场景。
-
zlib包:
zlib
包实现了 zlib 压缩算法,它是对 DEFLATE 数据的封装,添加了 zlib 头和校验和。- 使用
zlib.NewReader
和zlib.NewWriter
可以处理 zlib 格式的数据。 - zlib 格式常用于网络传输和文件存储,因为它结合了压缩效率和错误检测。
选择哪个库取决于你的具体需求:如果你需要处理 gzip 文件,使用 gzip
包;如果你需要 zlib 格式,使用 zlib
包;如果你只需要 DEFLATE 压缩,使用 flate
包。希望这些信息对你有所帮助!