как использовать zlib для сжатия в C и распаковки в golang - PullRequest
0 голосов
/ 25 октября 2018

Итак, я пытался преобразовать некоторые данные из C в сжатый и отправить в библиотеку, которая находится в Голанге, где они будут распакованы.Единственная проблема заключается в том, что они кажутся немного отличающимися реализациями друг от друга.

Что я сделал, так это использовал библиотеку zlib.h из C для сжатия строки "hello", что привело к байтам

[120 156 203 72 205 201 201 103 32 5]

в то время как в golang для той же строки «привет» приводит к массиву

[120 156 202 72 205 201 201 7 4 0 0 255 255 6 44 2 21]

Мой вопрос: есть ли способ сделать эти выводы похожими, что это?или, по крайней мере, можно ли распаковать сжатые данные в C в zlib?

Я также рассмотрел Как я могу использовать zlib в golang для взаимодействия с zlib в c? , но яищу что-то более конкретное, например, пример.

1 Ответ

0 голосов
/ 25 октября 2018

Сравнение сжатых данных ничего вам не говорит.Разные компрессоры, или разные версии одного и того же компрессора, или одна и та же версия, используемая с разными настройками, могут давать разные сжатые выходные данные для одного и того же входа.Что действительно важно для компрессора без потерь, так это возможность распаковки до исходных данных.

Проблема с вашим первым примером состоит в том, что он неполон.(Второй пример является полным и правильным.) Первый пример заканчивается в середине блока deflate.При использовании zlib произошла ошибка, либо при управлении полученными данными, либо при неправильном запросе на завершение сжатия.

...