有人可以告诉我如何解压缩字节阵列吗?

这是我的代码。我已经尝试了很久了,它给了我一个 DataFormatException.

byte bArray[] = new byte[tSizeOfTile];
input.read(bArray, offset, limit);

byte[] unComp = new byte[bArray.length + 100];

Inflater inflate = new Inflater();
inflate.setInput(bArray);
inflate.inflate(unComp, offset, bArray.length + 100);
inflate.end();
有帮助吗?

解决方案

好吧,一个确定的问题是您显然正在使用 InputStream.read 不检查返回值。这意味着您可能读取的数据比预期的要少。

另外,您正在尝试膨胀 unComp 偏移,但最大长度与 unComp.length. 。这意味着是否 offset 除了0之外,您可能正在尝试通过数组的末端编写。

你是说偏移是指 输入 大批?我不相信这就是意味着什么。您应该使用 setInput只要 提供输入数据。

但是,您可以通过使用使所有这些更容易 InflaterInputStream 而不是处理 Inflate 你自己。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top