Java二进制文件解析之最终解析

 时间:2024-10-12 11:10:37

1、读取二进制文件,并将二进制文件转为byte[],方便后续的二进制数组截取,详细内容如下,如图所示:@SuppressWarnings("resource") public byte[] getContent(String filePath) throws IOException { File file = new File(filePath); long fileSize = file.length(); if (fileSize > Integer.MAX_VALUE) { System.out.println("file too big..."); return null; } FileInputStream fi = new FileInputStream(file); byte[] buffer = new byte[(int) fileSize]; int offset = 0; int numRead = 0; while (offset < buffer.length && (numRead = fi.read(buffer, offset, buffer.length - offset)) >= 0) { offset += numRead; } // 确保所有数据均被读取 if (offset != buffer.length) { throw new IOException("Could not completely read file " + file.getName()); } fi.close(); return buffer; }

Java二进制文件解析之最终解析

3、准备将字节数组转为无符号short类型的方法(注:其他转int,转string类型的方法就不在这儿一一写出来了),方法如下:/** * 将字节数组转为short类型(注:由于转换后为有符号short,但我们需要无符号short,所以与上0x0FFFF,返回int类型) * @param b * @return */ public static int byte2Short(byte[] b) { short shortValue = 0; for (int i = 0; i < b.length; i++) { shortValue += (b[i] & 0x00FF) << (8 * (1 - i)); } return shortValue & 0x0FFFF; }

Java二进制文件解析之最终解析

5、在引用第四步的方法时,需传入第一步中读取的结果byte[],如下所示:MessageHeader header = getMessageHeader(bytes);这样我们就可以将这个二进制文件转为一个或多个对象,方便我们对获得的这些数据进行处理了。

  • 有抵押贷款的房子要拆迁怎么办
  • dubuque ia在哪个国家
  • 60级德巴攻略
  • 错误629,629错误代码怎么解决?
  • OU电音如何查看个人头像大图
  • 热门搜索
    甘肃旅游线路 旅游板块 中国旅游业 广西北海旅游攻略 爱好旅游打一成语迷底是 挪威旅游 旅游包 石泉旅游 荣成旅游 旅游服务与管理