有人可以告诉我如何解压缩字节数组吗?
这是我的代码。我已经尝试了很多年了,它给了我一个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();
答案 0 :(得分:5)
嗯,一个明确的问题是你显然在没有检查返回值的情况下使用InputStream.read
。这意味着您可能读取的数据少于预期。
此外,您尝试从偏移量unComp
进入,但最大长度与unComp.length
相同。这意味着如果offset
不是0,你可能会尝试写出数组的末尾。
你的意思是指代输入数组的偏移量吗?我不相信这就是它的含义。您应该使用setInput
仅提供输入数据。
但是,您可以使用InflaterInputStream
代替自己处理Inflate
,让自己更轻松地完成所有这些工作。