gpt4 book ai didi

c++ - zlib 添加的各种类型的目的是什么,我该如何使用它们?

转载 作者:行者123 更新时间:2023-11-28 04:36:23 24 4
gpt4 key购买 nike

我目前正在尝试,以学习 zlib 的基本用法为目标,创建一个用 C++ 压缩和解压缩文件的小实用程序。我正在使用 zlib 提供的 compress2uncompress 函数来实现这一点。然而,这两个函数都采用各种似乎特定于 zlib 的类型(BytefuLongf 等),它们与 C++ 类型(或者,更确切地说, ,指向这些类型中的每一个的指针)。这使得与 zlib 接口(interface)的简单代码变得更加复杂,除非我根据 zlib 的类型编写我的整个应用程序。

我的问题有 3 个部分:

  • 与我在自己的文件 I/O 代码中用来表示文件长度的 unsigned long 等内置类型相比,这些类型的用途是什么?
  • 使用这些类型的正确方法是什么?我可以重新解释将我的 char 指针转换为数据以(解)压缩为 Bytef 指针,而不更改 char 数组长度的数据长度吗?因为 char 是一个字节,而 Bytef 的名字暗示它是相同的长度,我想我可以,但我想确定一下。我可以简单地将 unsigned long(或其他非 zlib 整数类型)分配给 uLongf 和其他 zlib 看似整数的类型吗?
  • zlib 关于这些类型的官方文档在哪里?

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

最佳答案

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

关于c++ - zlib 添加的各种类型的目的是什么,我该如何使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51334741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com