使用Java读取VB 5.0二进制文件

Fra*_*anz 3 java vb5

我有一个二进制文件,它是从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)

Gab*_*abe 5

由于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)