3

Visual Basic 5.0 で作成されたプログラムから作成されたバイナリ ファイルがあります。このファイルにはLong、Visual Basic の世界からの一連の値が含まれているだけです。Visual Basic 5.0 ではサイズが 4 バイトであることは理解していLongますが、バイト オーダーはわかりません。

さまざまな「読み取り」メソッドを使用して 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 );
    }
4

1 に答える 1

5

VB は x86 CPU で実行されるため、そのデータ型はリトル エンディアンです。また、VB の aは Javaの aLongと同じサイズであることに注意してください。int

私はこのようなことを試してみます:

int vbLong = ins.readUnsignedByte() +
             (ins.readUnsignedByte() << 8) +
             (ins.readUnsignedByte() << 16) +
             (ins.readUnsignedByte() << 24);
于 2011-06-20T11:25:33.127 に答える