Pregunta

¿Alguien puede decirme cómo descomprimir un conjunto de bytes?

Aquí está mi código. He estado tratando durante años y me está dando una 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();
¿Fue útil?

Solución

Bueno, una cuestión definitiva es que se está utilizando InputStream.read aparentemente sin comprobar el valor de retorno. Eso significa que puede haber leído menos datos de los que esperaba.

También, que está tratando de inflar en unComp de el desplazamiento, pero con una longitud máxima es el mismo que unComp.length. Esto significa que si offset es otra cosa que no sea 0, usted podría estar tratando de escribir más allá del final de la matriz.

Quizás quiso decir el desplazamiento para referirse a la entrada array? No creo que eso es lo que significa. Debe utilizar setInput a solamente proporcionan datos de entrada.

Sin embargo, usted podría hacer todo esto mucho más fácil para usted mismo usando InflaterInputStream vez de manejar Inflate mismo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top