2

さまざまな量のデータを含む 1 つ以上のテスト パケットを含むバイナリ ファイルを後処理する Java プログラムを作成しています。BufferedReader オブジェクトを使用してバイナリ ファイルを解析します。私のプログラムの目的はパケット サイズを更新することなので、パケット ヘッダー「Test」で示される次のパケットに到達するまで、パケットを解析します。

プログラムは Windows 7 PC では正常に動作しますが、何らかの理由で Linux マシンでは動作しません。私の PC と同じようにパケット データを正しく見つけて読み取っていないだけですが、その理由はわかりません。

私は両方を試しました:

        private final int PACKET_DATA_SIZE          = 4;
        char[] packetData = new char[PACKET_DATA_SIZE];

        while( !tempString.equals("Test") ) {
            read(br, packetData, PACKET_DATA_SIZE);
            tempString = new String(packetData);

            if ( currentLocation >= fileSize ) {
                break;
            }
        }

        while( currentLocation < fileSize ) {
            read(br, packetData, PACKET_DATA_SIZE);

            if (packetData[0] == 'T' && packetData[1] == 'e' && packetData[2] == 's' && packetData[3] == 't') {
                break;
            }
        }

どちらも私の読み取り機能を使用します:

public void read(BufferedReader br, char[] cbuf, int length) {
    try {
        br.read(cbuf, 0, length);
    } catch(IOException e) {
        e.printStackTrace();
    }
    currentLocation += length;
}           

どちらも Win7 では正常に動作しますが、私の Linux マシンでは動作しません。Linux が生のバイナリ ファイルの文字を Windows とは異なる方法で解釈するのはなぜですか? 両方のバイナリ ファイルは、まったく同じ方法でバイトごとに書き込まれます。ありがとうございました

4

2 に答える 2