java - 如何在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;
}
你能建议我解决这个问题吗?
解决方案
推荐阅读
- javascript - 如何更改 React 中的路由以响应窗口消息事件?
- mysql - SQL 获得最高票数的一方
- python - 计算我要活多少天才能活到 25,000 天,那个日期是多少天
- c++ - 无法在 webbots::PositionSensor 对象中获取位置传感器的值
- r - 如何在不使用 R 中的日期的情况下创建多个主题的时间线?
- php - 如何使用 Postgres jsonb '?Laravel 中具有索引支持的运算符?
- c# - 注册 .Net Standard 2.0 DLL 时忽略连接的 WCF 服务?
- c# - Where(predicate).FirstOrDefault() 与 FirstOrDefault(predicate) 的令人惊讶或错误的基准?
- sql - 如何将外键添加到现有表?
- java - Java While循环条件没有被执行