- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我似乎无法获得 Flex 3 想要解压缩的流。
我试过:
这些似乎都不能让 ByteArray.uncompress
开心,即我明白了
Error #2058: There was an error decompressing the data.
此外,整个 Deflate 与 zlib 的对比让我一直在兜圈子。
好像是根据wikipedia文章中,zlib 是 DEFLATE 的一个实现。但是根据Actionscript他们是两个不同的东西?
Microsoft 似乎还表明 Gzip 至少使用了 Deflate 算法,因为在他们的文档中他们提到了 GZipOutputStream使用与 DeflateStream 相同的压缩算法.所以我假设这只是一个 header 差异,这表明就“ByteArray.uncompress”而言“不好”,因为“DEFLATE”算法仅在 AIR 应用程序中受支持。
示例“服务器”代码,在这种情况下使用 SharpZipLib(不工作):
public virtual bool ProcessRequest(string path, HttpListenerContext context)
{
var buffer = File.ReadAllBytes(path);
// Specifying to strip header/footer from data as that seems to be what the
// docs for ByteArray.uncompress indicate is necessary
var deflater = new Deflater(Deflater.DEFAULT_COMPRESSION, true);
using (var zipStream = new DeflaterOutputStream(context.Response.OutputStream, deflater))
{
zipStream.Write(buffer, 0, buffer.Length);
}
}
最佳答案
ZLIB 和 DEFLATE 是不一样的。 IETF RFC 中定义了一组 3 个相关的压缩规范:
它们都(主要)使用特定的压缩算法,即 DEFLATE。
第一个是 ZLIB,在开头包含帧字节。根据RFC 1950 ...
A zlib stream has the following structure:
0 1
+---+---+
|CMF|FLG| (more-->)
+---+---+
(if FLG.FDICT set)
0 1 2 3
+---+---+---+---+
| DICTID | (more-->)
+---+---+---+---+
+=====================+---+---+---+---+
|...compressed data...| ADLER32 |
+=====================+---+---+---+---+
CMF 和 FLG 是字节。正如规范所述,ZLIB 中使用的主要压缩方法是 DEFLATE,尽管规范可以与其他方法一起使用。一般来说不是。此外,通常不使用 DICTID。因此每个 ZLIB 字节流都有 2 个字节,后面是压缩数据流,然后是 Adler32 校验和。压缩数据是来自 DEFLATE 的裸字节流。
这说明 ZLIB 作为一种格式与 DEFLATE 有何不同。 GZIP 是第三种格式。如果您需要详细信息,请查看 RFC。关键是像 ZLIB,GZIP 主要使用 DEFLATE,它在压缩数据流之前放置一个 header ,然后放置一个校验和。但是 GZIP header 不同于 ZLIB header ,因此任何 GZipStream 类都无法写入可读为 ZLIB 的字节流。反之亦然。
当读取 ZLIB 流时,some people address the problem you experienced通过在数据流上使用 .NET 的内置 DeflateStream,在将流推进到前两个 ZLIB 帧字节之后。这有效,只要你想阅读,ZLIB 流使用 DEFLATE(安全假设)并且它没有定义固定字典(也很安全),如果你不关心 Adler32 提供的完整性检查(或许)。
如果您不喜欢做出这些假设或放弃检查,或者如果您必须生成一个 ZLIB 数据流,那么有一个 ZlibStream在 DotNetZip它将为您读取和写入 ZLIB 数据流,并根据需要验证或生成校验和。
DotNetZip 可免费使用,适用于任何 .NET 语言。您不需要完整的 DotNetZip 库,而只需要 Ionic.Zlib.dll 。
关于c# - .NET zlib Stream 兼容 Actionscript ByteArray.uncompress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1545973/
我想通过算法生成 X MBytes 的“不可压缩”数据序列。我希望以这种方式创建一个通过 VPN 连接测量网络速度的程序(避免 vpn 内置压缩)。 有谁能够帮助我?谢谢! 附注。我需要一个算法,我使
我是 jquery 新手,我可以用它进行简单的编码。我想更多地了解这些文件“缩小”“未压缩”以及何时应该使用每个文件? 最佳答案 每个文件的缩小版本和压缩版本只是在具有相同功能的情况下缩小尺寸的版本。
我正在尝试将我的 Flutter 包上传到 pub.dev。 Dry Run 工作正常,没有显示错误。但是,当我将相同的包上传到 pub.dev 时,上传失败并显示“未压缩的包存档太大(大小 > 10
我存储了 MySQL Compress 函数,用于将压缩的 blob 数据插入数据库。 在上一个问题中,我被指示使用 func.compress ( mysql Compress() with sql
我做了一个简单的函数,它接受一个 gzip 文件,然后提取到某个地方。出于测试目的,我使用了一个文本文件,该文件已通过通用实用程序 gzip 压缩。但出于某种原因 Uncompress()返回错误 Z
我正在编写基于 Qt 的客户端应用程序。它使用 QTcpSocket 连接到远程服务器。在发送任何实际数据之前,它需要发送登录信息,这是 zlib 压缩的 json。 据我从服务器源知道的那样,为了使
我希望使用 Perl 模块 IO::Uncompress::AnyUncompress,记录在这里:http://perldoc.perl.org/IO/Uncompress/AnyUncompres
我目前正在使用核心模块 IO::Uncompress::Unzip 读取 Perl 中的 zip 文件的内容。我以前使用过 Archive::Zip,这是一个很棒的模块,并没有让我头疼,但它没有作为核
我尝试在 64 位 Linux 上为 32 位 Linux 版本交叉编译我的程序对于其他系统,它工作正常(win、ios 和 android,但不适用于 linux……) 98% 存在错误 “unde
我是 Emacs 的新手,所以这可能是一个非常幼稚的问题,但我似乎找不到任何相关信息。 基本问题似乎是我无法打开任何“信息”主题。 当我尝试打开它们中的任何一个时出现的错误是: Uncompressi
根据mysql和mariadb docs如果使用 compress() 压缩了输入字符串,uncompress() 将返回一个字符串。 例子中也说明了: SELECT UNCOMPRESS(COMPR
如何使用 mysql 的 compress() 和 uncompress() 函数在存储文本之前压缩文本,并在使用带有 ORM hibernate 模式的 mysql 数据库检索文本时解压缩文本? 最
我在将内核从旧版 SH4 移植到新版 SH4 时遇到了问题。请让我展示一下它们之间的区别。 [老款SH4] 引导装载程序:redboot v2.0 内核版本:2.4 [新SH4] 引导加载程序:u-b
zlib库(zlib版本1.2.3)中有一些函数可以解压 我想使用 uncompress 函数解压我的源 zip (.gz) 文件。它不工作(错误代码 -3)但 gzopen 是。当我输入有效负载指针
我是 Perl 编程新手。 我有一个 8GB 的 zip 文件,其中包含数据文件和元数据文件。目标是读取元数据文件的内容以与 zip 中的数据文件名进行比较。 当前的实现是使用IO::Uncomp
我是 Perl 编程新手。 我有一个 8GB 的 zip 文件,其中包含数据文件和元数据文件。目标是读取元数据文件的内容以与 zip 中的数据文件名进行比较。 当前的实现是使用IO::Uncomp
我们正在从当前的构建系统(一团糟)转向使用 Ant 和 Ivy 的系统。我正在清理所有构建文件,并找到 jar 依赖项。我认为如果我可以稍微自动化一下,通过检查 checkin 项目的 jar,找到它
所以我将一些 XML 存储在表中,并使用 MySQL 的“COMPRESS”函数,如下所示: $query = "SELECT UNCOMPRESS(table_row) FROM database
我正在尝试创建一个解压缩 LZAM2 压缩数据的函数。我的灵感来自 this tutorial这对 LZMA 非常有效,我尝试将其改编为 LZMA2。我成功地为 LZMA2 创建了压缩函数,但我没有成
我似乎无法获得 Flex 3 想要解压缩的流。 我试过: System.IO.Compression.GZipStream System.IO.Compression.DeflateStream IC
我是一名优秀的程序员,十分优秀!