从二进制文件中读取结构化数据 - ?

Eug*_*neP 6 java file-io parsing

我知道文件结构,假设这个结构是这样的:

[3-bytes long int],[1-byte long unsigned integer],[4-bytes long unsigned integer]
Run Code Online (Sandbox Code Playgroud)

因此该文件包含此类记录的链.

在Java中解析这样一个文件最优雅的方法是什么?

据说,我们可以定义一个总长度的byte []数组并用InputStream读取它,但是如何将它的子元素转换成正确的整数值呢?

首先,java中的字节值是有符号的,在我们的例子中我们需要无符号值.接下来,有没有有用的方法允许将字节的子数组(例如,从1-st到4的字节转换为正确的整数值)?

我知道,Perl中有函数pack和unpack,允许你将一个字节字符串表示为表达式,假设"VV"表示2个无符号long int值.您定义了这样一个字符串,并将其作为packunpack函数的参数以及要打包/解包的字节提供.Java/Apache库等中有这样的东西吗?

Dar*_*rov 1

您可以看一下这个基于DataInputStream类的示例BinaryReader类。