c++ - Zlib压缩放大文件

标签 c++ ios c zlib

我尝试在 iPhone 应用程序中使用 zlib 将文本文件压缩为 gzip 文件作为测试。我正在使用以下代码

const char *s = [[Path stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@".%@", [Path pathExtension]] withString:@".gz"] UTF8String];
gzFile *fi = (gzFile *)gzopen(s, "wb");
const char *c = readFile(Path.UTF8String);
gzwrite(fi, c, strlen(c));
gzclose(fi);

其中 readFile() 返回使用 fgets() 函数从文件中获取的 const char*。问题是,当我用它来压缩文件时,它不会压缩文件,而是 gzip 文件比原始文件大。例如,我有一个 90 字节的文本文件,使用此方法后,gzip 的大小为 98 字节。为什么 gzip 不小于原始文件?

最佳答案

GZip 格式包含固定大小的 header 信息。由于您压缩的数据非常少,因此 header 信息比您节省的空间要大。

90 字节通常不值得压缩。

http://www.gzip.org/zlib/rfc-gzip.html#header-trailer

关于c++ - Zlib压缩放大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15594669/

相关文章:

ios - iOS 推送通知的 AWS SNS 声音未发生

c - 传递矩阵作为参数

c - 如何将指针赋值给全局变量?

c - 运行C程序时出错

c++ - Printf和Scanf C++实现

c++ - 无法打开文件 'd3d9.h' - Windows 10/DirectX 9/VS 2015

c++ - 编译对齐的结构在 GCC 中给出奇怪的警告

c++ - 如何检测哪个互斥锁为操作系统提供了最多的时间?

ios - 更改 UISearchBar 搜索字段背景

ios - 任何 iOS 应用程序如何从解析中下载视频? swift