问题标签 [zlib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ZLib 解压
我正在尝试使用 zlib .net 库压缩数据。不管未压缩字符串的内容如何,我似乎只在 raw[] 中得到两个字节的数据。
unicode - 如何在日本机器上使用 zlib?
我正在尝试通过使用zlib压缩字符串(我已经使用当前 1.2.3 版本的 zlib 和 zlib 1.1.3 尝试了此代码)。 我的代码可以正常工作,除非在日本机器上运行。压缩文件后,我正在对其进行加密。解密成功,但对 uncompress 的调用返回 -3(Z_DATA_ERROR
,表示输入数据已损坏)。由于没有记录错误,我知道没有抛出异常,并且压缩函数返回 0 ( Z_OK
,表示它有效)。
因此,我怀疑问题是sCompressed
字符串在 " sCompressed = Left(sCompressed, lcompressedlen)
" 行或 " 行 "上失去了完整性encryptedData.Content = sCompressed
。或者, VB6可能在sCompressed
调用compress
. 我知道这个函数的返回值以后不会被破坏,因为那会破坏解密,这工作正常。
结论:
如果在具有可疑字符集的机器上运行,我最终让程序给出错误消息并退出。这个错误很可能仍然存在于一些设置中,也很可能在某些触发错误的设置中不存在。然而,由于目标受众是说英语的人,通过土耳其测试并不重要,不足以证明实际上花更多时间在这方面是合理的。
blackberry - 如何从黑莓应用程序中的附加 zip 文件中检索数据?
我正在使用 eclipse 为黑莓构建应用程序。我在我的应用程序中附加了一个 zip 文件。请帮助我,我不知道如何在应用程序开发中从 zip 文件中检索数据。
c++ - 免费的非 gpl 数据压缩库
我正在编写存储数据的项目,所以我需要压缩它。我试过 zlib 但它是我项目的瓶颈。所以也许有更快的解决方案。我不需要很大的压缩比,但我正在寻找真正快速的压缩。除了 zlib 之外,是否还有其他数据压缩库,它们是真正免费的并且可以在专有软件中使用(我正在从事的项目,不是基于 GPL 的)。我的项目在 C++ 上,我需要压缩 char* 文本数组。
ruby - 如何在 ruby 中解压缩 Gzip 字符串?
Zlib::GzipReader 可以接受“一个 IO 或类似 IO 的对象”。作为输入,如文档中所述。
我应该如何解压缩字符串?
compression - zlib解压失败
我正在编写一个需要解压缩由另一个应用程序压缩的数据的应用程序(这超出了我的控制 - 我无法更改它的源代码)。生产者应用程序使用 zlib 使用 z_stream 机制压缩数据。它经常使用 Z_FULL_FLUSH(在我看来,可能过于频繁,但这是另一回事)。这个第三方应用程序也能够解压缩它自己的数据,所以我非常有信心数据本身是正确的。
在我的测试中,我使用这个第三方应用程序来压缩以下简单的文本文件(十六进制):
48 65 6c 6c 6f 20 57 6f 72 6c 64 21 0d 0a
我从应用程序收到的压缩字节如下所示(同样,以十六进制表示):
78 9c f2 48 cd c9 c9 57 08 cf 2f ca 49 51 e4 e5 02 00 00 00 ff ff
如果我尝试压缩相同的数据,我会得到非常相似的结果:
78 9c f3 48 cd c9 c9 57 08 cf 2f ca 49 51 e4 e5 02 00 24 e9 04 55
我可以看到两个不同之处:
首先,第四个字节是F2
,而不是F3
,所以放气“最终块”位尚未设置。我认为这是因为流接口永远不知道传入数据何时结束,所以永远不要设置那个位?
最后,外部数据中的最后四个字节是00 00 FF FF
,而在我的测试数据中是24 E9 04 55
。在此页面上搜索我发现
http://www.bolet.org/~pornin/deflate-flush.html
...这是同步或完全刷新的签名。
当我尝试使用该函数解压缩自己的数据时decompress()
,一切正常。但是,当我尝试解压缩外部数据时,decompress()
函数调用失败,返回码为Z_DATA_ERROR
,表示数据损坏。
我有几个问题:
我是否应该能够使用 zlib“解压缩”功能来解压缩使用 z_stream 方法压缩的数据?
在上面的例子中,最后四个字节的意义是什么?假设外部压缩的数据流和我自己的测试数据流的长度相同,那么我的最后四个字节代表什么?
干杯
c++ - deflateEnd 错误“无味精”种类:“Z_DATA_ERROR”:-3
我有一个在 zlib v1.2.3 中链接的程序,它出现以下错误:
该程序已成功处理许多要压缩的不同文件。
有谁知道 Z_DATA_ERROR 的“无味精”是什么意思以及如何调试它?
php - gzdeflate() 和大量数据
我一直在构建一个类来在 PHP 中创建 ZIP 文件。ZipArchive 的替代方案,假设它在服务器中是不允许的。与那些免费服务器一起使用的东西。
它已经开始工作了,使用 PHP 构建 ZIP 结构,并使用 gzdeflate() 生成压缩数据。
问题是,gzdeflate() 要求我将整个文件加载到内存中,并且我希望类的工作限制在 32MB 的内存中。目前它存储的文件大于 16MB,完全没有压缩。
我想我应该让它压缩数据块,16MB x 16MB,但我不知道如何连接两个 gzdeflate() 的结果。
我一直在测试它,它似乎需要在最后 16 位中进行一些数学运算,有点buff->last16bits = (buff->last16bits & newblock->first16bits) | 0xfffe
,它有效,但不适用于所有样本......
问题:如何在不解压缩的情况下连接两个 DEFLATEd 流?
delphi - 检测文件压缩
我必须读取由第三方应用程序存储在 Acess 2000 数据库中的一些数据。供应商不再在附近提问。
一个表包含似乎被压缩的图像数据 - 因为原始应用程序可以将 blob 字段的内容导出到 xls 导出文件中的嵌入 png 图像。
我使用 ADO 和 Delphi (TADOBlobStream) 提取了记录的内容,将其保存到磁盘并使用十六进制编辑器打开它。
十六进制的前100个字符如下
F8 1B 00 00 07 C0 24 27 01 40 7F 20 EC 5D 24 2D 88 5C F0 A7 49 91 4A C4 EA 85 D2 98 6A B5 79 D7 B7 2B D5 48 F8 1B 00 00 07 C0 24 27 01 40 7F 24 2D 88 5C F0 A7 49 91 4A C4 EA 85 D2 98 6A B5 79 D7 B7 2B D5 48 1A 9A C8 D3 54 E3 A3 E4 F5 29 C6 97 22 95 6A 8E 10 BD 3E 4B 0B 11 AA 6D A8 C6 7 8
谁能告诉我这是否符合常用的压缩算法。第 3 方应用程序似乎使用 zlib 编码方法,因为其 bin 目录中存在编码 dll。但是使用 zlib 解压缩不会产生 PNG。仅供参考,保存的文件大约是嵌入到 XLS 中的 PNG 文件大小的 20%。
谢谢
api - VB6 API 声明路径
我在模块中有以下声明:
函数中的以下代码行失败,并出现“找不到文件:ZLIB.DLL”错误:
我知道 ZLIB 不需要注册。我的问题是,ZLIB.DLL 需要放在哪里才能让我的代码工作?我也知道这段代码正在另一台机器上运行。目前我在与应用程序 exe 相同的文件夹中有 ZLIB.DLL。
更新
令我松了一口气的是,代码在编译时确实有效。但在 IDE 中运行时不起作用(它在另一台机器上运行)。我的应用程序文件夹中仍然有 ZLIB.DLL。这意味着必须检查应用程序路径以加载 DLL。
为了解决这个问题,我尝试过:
然后在函数中:
这似乎允许加载 DLL,但随后我得到一个“错误的 DLL 调用约定”错误。情节变厚了。
解决了
答案似乎在这里:http ://www.zlib.net/DLL_FAQ.txt 。我想这是RTFM的一个例子。因此,奇怪的是,在 IDE 中,STD_CALL
约定是有效的,但是一旦编译了 C 风格的调用约定就足够了。它仍然没有解释为什么它可以在 IDE 中的不同机器上工作。哼哼。
感谢大家为我指明正确的方向。