我如何使用zlib在C中压缩并在golang中解压缩

时间:2018-10-24 23:03:02

标签: c go zlib

因此,我一直在尝试将一些数据从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?,但我正在寻找更具体的内容,例如示例。

1 个答案:

答案 0 :(得分:2)

比较压缩数据不会告诉您任何信息。不同的压缩器,或同一压缩器的不同版本,或用于不同设置的相同版本,都可以为同一输入提供不同的压缩输出。对于无损压缩器而言,真正重要的是是否可以将其解压缩为原始数据。

第一个示例的问题在于它不完整。 (第二个示例完整且正确。)第一个示例在deflate块的中间结束。使用zlib时出现错误,无论是在管理结果数据方面,还是在未正确请求完成压缩的过程中。