我目前正在尝试,以学习 zlib 的基本用法为目标,创建一个小实用程序来压缩和解压缩 C++ 中的文件。我正在使用 zlib 提供的compress2anduncompress函数来促进这一点。然而,这两个函数都采用似乎特定于 zlib ( Bytef,uLongf等) 的各种类型,而在它们和 C++ 类型(或者更确切地说,指向这些类型中的每一个的指针)之间没有任何自动转换。这使得与 zlib 交互的简单代码更加复杂,除非我基于 zlib 的类型编写整个应用程序。
我的问题有 3 个部分:
unsigned long与我在自己的文件 I/O 代码中用于表示文件长度的内置类型(如 )相比,这些类型的用途是什么?- 使用这些类型的正确方法是什么?我可以重新解释将我的
char指向数据的指针转换为(解)压缩到Bytef指针而不改变我的 char 数组长度的数据长度吗?因为char是一个字节并且Bytef的名字暗示它是相同的长度,我想我可以,但我想确定一下。我可以简单地将一个unsigned long(或其他非 zlib 整数类型)分配给uLongf其他 zlib 看似整数类型吗? - zlib 关于这些类型的官方文档在哪里?
我浏览了zlib 手册并完整阅读了可能看起来相关的部分,以及 ctrl+f 辅助搜索,但无济于事。我的搜索引擎也不知道答案。