Как распаковать байтовый массив в Java - PullRequest
1 голос
/ 16 августа 2010

Может кто-нибудь сказать мне, как распаковать массив байтов?

Вот мой код. Я пытался это целую вечность, и это дает мне 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();

1 Ответ

5 голосов
/ 16 августа 2010

Хорошо, одна определенная проблема заключается в том, что вы, очевидно, используете InputStream.read без проверки возвращаемого значения.Это означает, что вы, возможно, прочитали меньше данных, чем ожидали.

Кроме того, вы пытаетесь увеличить в unComp с смещение, но максимальная длина совпадает сunComp.length.Это означает, что если offset - это что-то отличное от 0, вы можете пытаться записать после конца массива.

Вы имели в виду смещение для обращения к массиву input ?Я не верю, что это значит.Вы должны использовать от setInput до только для ввода входных данных.

Однако вы могли бы значительно упростить все это, используя InflaterInputStream вместо обработки Inflate самостоятельно.

...