我有一个二进制文件,它是从Visual Basic 5.0中创建的程序创建的。该文件只包含Visual Basic世界中的一堆Long
值。我已经知道Visual Basic 5.0中Long
的大小是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 );
}
答案 0 :(得分:5)
由于VB在x86 CPU上运行,因此其数据类型为little-endian。另请注意,VB中的Long
与Java中的int
大小相同。
我会尝试这样的事情:
int vbLong = ins.readUnsignedByte() +
(ins.readUnsignedByte() << 8) +
(ins.readUnsignedByte() << 16) +
(ins.readUnsignedByte() << 24);