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

时间:2011-06-20 11:20:48

标签: java vb5

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

1 个答案:

答案 0 :(得分:5)

由于VB在x86 CPU上运行,因此其数据类型为little-endian。另请注意,VB中的Long与Java中的int大小相同。

我会尝试这样的事情:

int vbLong = ins.readUnsignedByte() +
             (ins.readUnsignedByte() << 8) +
             (ins.readUnsignedByte() << 16) +
             (ins.readUnsignedByte() << 24);