我有一个二进制文件,它是从Visual Basic 5.0中生成的程序创建的.该文件只包含LongVisual Basic世界中的一堆值.我已经知道Long在Visual Basic 5.0中大小是4个字节,但我不知道字节顺序.
我尝试使用各种"读取"方法使用DataInputStream解析文件,但我似乎得到"错误"(即负面)值.
如何阅读本文并使用Java正确解释?在Visual Basic 5.0中Long的字节顺序是什么?
下面是我正在尝试使用的某种代码; 我正在尝试阅读2 Long秒并在屏幕上打印出来,然后再阅读2个等等.
try {
File dbFile = new File(dbFolder + fileINA);
FileInputStream fINA = new FileInputStream(dbFile);
dINA = new DataInputStream(fINA);
long counter = 0;
while (true) {
Integer firstAddress = dINA.readInt();
Integer lastAddress = dINA.readInt();
System.out.println(counter++ + ": " + firstAddress + " " + lastAddress);
}
}
catch(IOException e) {
System.out.println ( "IO Exception =: " + e );
}
Run Code Online (Sandbox Code Playgroud)
由于VB在x86 CPU上运行,因此其数据类型为little-endian.另请注意,LongVB中的a 与Java中的大小相同int.
我会尝试这样的事情:
int vbLong = ins.readUnsignedByte() +
(ins.readUnsignedByte() << 8) +
(ins.readUnsignedByte() << 16) +
(ins.readUnsignedByte() << 24);
Run Code Online (Sandbox Code Playgroud)