【发布时间】:2018-10-24 23:03:01
【问题描述】:
所以我一直在尝试将 C 中的一些数据转换为压缩并发送到 golang 中的库,然后将其解压缩。 唯一的问题是,它们之间的实现似乎略有不同。
我所做的是使用 C 中的“zlib.h”库来压缩字符串“hello”,从而产生
[120 156 203 72 205 201 201 103 32 5]
在 golang 中,对于相同的字符串 "hello" 会产生一个数组
[120 156 202 72 205 201 201 7 4 0 0 255 255 6 44 2 21]
我的问题是是否有办法使这些输出相似,它是什么?或者至少可以在zlib中解压缩C中的压缩数据?
我也查看了How can I use zlib in golang to cooperate with zlib in c?,但我正在寻找更具体的内容,例如示例。
【问题讨论】:
-
您链接的问题中的答案不是吗?即不,您不能保证压缩数据是相似的 - 实现细节存在差异(尽管其中一个压缩的数据仍然可以与另一个解压缩)
-
在 golang 中对 C 中压缩的东西的解压似乎不起作用,它退出说它遇到了 EOF
-
pigz 命令无法在没有错误的情况下解压缩您的第一个数组,如果我在前面加上 gzip 标头,gzip 也不能,您的 C 程序的输出有问题。 (注意,有些程序会解压它,例如
openssl zlib或zlib-flate命令,但它们对来自 zlib 的错误的处理相当松散)。 -
这是 Compressed output differs from Go to Ruby Implementation 的副本 - ruby 使用与 C 中相同的 zlib 库。