.NET 的 GzipStream 与 Qt 基于 zlib 的 qCompress/qUncompress 兼容吗?

发布于 2024-10-09 20:12:07 字数 206 浏览 0 评论 0原文

.NET 的 GzipStream 与 Qt 的基于 zlib 的 qCompress/qUncompress 兼容吗?我相信它们都使用 deflate 算法,所以我是否能够使用 .NET 的 DeflateStream 或 GzipStream 读取 Qt 的 qCompress 写入的数据,并写入 Qt 的 qUncompress 可读的数据,而无需在 .NET 中重新实现整个 zlib ?

Is .NET's GzipStream compatible with Qt's zlib-based qCompress/qUncompress? I believe they both use the deflate algorithm, so would I be able to use .NET's DeflateStream or GzipStream to read data written by Qt's qCompress, and write data readable by Qt's qUncompress without reimplementing zlib in its entirety in .NET?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

会傲 2024-10-16 20:12:07

我对此表示怀疑。首先,qCompress() 将数据大小放在前 4 个字节中,这与 zlib 标准无关。您可能希望跳过这些字节,但这是一个肮脏的黑客行为。其次,当 qCompress() 使用 compress2() 调用时,GzipStream 听起来像是读取 Gzip 格式(专为压缩文件而设计的 zlib 格式),而 compress2() 调用使用另一种专为内存压缩而设计的 zlib 格式。

qCompress() 和 qUncompress() 旨在相互配合,仅此而已。如果需要兼容其他代码,直接使用zlib,简单且可移植。事实上,我们公司正在这样做——服务器使用Qt,客户端使用.Net和Java。工作完美。

I doubt it. First, qCompress() puts data size in the first 4 bytes which has nothing to do with zlib standards. You may wish to skip those bytes, but that's a dirty hack. Second, GzipStream sounds like it reads Gzip format (zlib format designed for compressing files) when qCompress() uses compress2() call which uses another zlib format designed for in-memory compression.

qCompress() and qUncompress() are designed to work with each other and nothing more. If you need compatibility with other code, use zlib directly, it is easy and portable. In fact, we are doing it in our company - the server uses Qt, the clients use .Net and Java. Works perfectly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文