任何人都可以告诉我如何解压缩字节数组?
这是我的代码.我已经尝试了很多年,它给了我一个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();
Run Code Online (Sandbox Code Playgroud)
嗯,一个明确的问题是你显然在InputStream.read
没有检查返回值的情况下使用.这意味着您可能读取的数据少于预期.
此外,您试图unComp
从偏移量进入膨胀,但最大长度与此相同unComp.length
.这意味着如果offset
不是0,你可能会尝试写入数组的末尾.
你的意思是指向输入数组的偏移量吗?我不相信这就是它的含义.您应该使用setInput
以仅提供输入数据.
但是,您可以通过使用InflaterInputStream
而不是Inflate
自己处理来使所有这些变得更容易.
归档时间: |
|
查看次数: |
1081 次 |
最近记录: |