首页 > 解决方案 > 如何在java中读取以十六进制二进制格式写入文件中的xml压缩数据?

问题描述

我有一种情况,我在一个文件中有十六进制二进制格式的 XML 压缩数据,我想解压缩这些数据。这是压缩的十六进制 42 字节。

String hexadecimaldata = "2002a4050240d044100041d084250a42c0040101080201144e1102013c460804410459441024311e4310"

String hexArray[] = hexadecimaldata.split("(?<=\\G..)");
for (int i = 0; i < 42; i++) {
    arr[i] = (byte) Integer.parseInt(hexArray[i + 2], 16);
}
byte[] output = decompressorr.decompressByteArray(arr);

我正在使用充气机来读取这个压缩的 XML 数据,但我收到了一个错误:

java.util.zip.ZipException:不正确的标头检查

这是我正在读取此 XML 压缩字节 [] 数据的代码。

public byte[] decompressByteArray(byte[] bytes) {
    byte[] output = null;
    try {
        Inflater inflater = new Inflater(true);

        inflater.setInput(bytes);
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream(bytes.length);
        byte[] buffer = new byte[1024];
        while (!inflater.finished()) {
            int count = inflater.inflate(buffer);
            outputStream.write(buffer, 0, count);
        }
        outputStream.close();
        output = outputStream.toByteArray();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return output;
}

你能建议我解决这个问题吗?

标签: java

解决方案


推荐阅读