首页 > 解决方案 > zlib 添加的各种类型的目的是什么,我该如何使用它们?

问题描述

我目前正在尝试,以学习 zlib 的基本用法为目标,创建一个小实用程序来压缩和解压缩 C++ 中的文件。我正在使用 zlib 提供的compress2anduncompress函数来促进这一点。然而,这两个函数都采用似乎特定于 zlib ( Bytef,uLongf等) 的各种类型,而在它们和 C++ 类型(或者更确切地说,指向这些类型中的每一个的指针)之间没有任何自动转换。这使得与 zlib 交互的简单代码更加复杂,除非我基于 zlib 的类型编写整个应用程序。

我的问题有 3 个部分:

我浏览了zlib 手册并完整阅读了可能看起来相关的部分,以及 ctrl+f 辅助搜索,但无济于事。我的搜索引擎也不知道答案。

标签: c++czlibbinary-data

解决方案


  • 为了可移植性,您的文件长度应该使用off_t,而不是unsigned long. 在某些系统上,它们的尺寸不同,off_t而且更长。
  • 是的,您可以在 and 之间Bytef进行转换char。(Bytef实际上是unsigned char,但不需要转换。)uLong是简单的unsigned long。(参见 zconf.h。)
  • zlib 的文档是 zlib.h,其中这些类型被称为函数的参数。您可以使用zlibCompileFlags()来确定每种类型的位数。(参见 zlib.h。)

推荐阅读