0

次のような値を持つ16進ファイルがあります

f0 01 05 00 00 00 00 00 00 3d 61 c1 c1 df 40 02 00 c0 00 00 09 18 16 00 ef 01 40 00 00 3f 20 f0 01 03 00 00 00 00 00 00 c7 a2 c1 c0 df 1 4 00 09 18 16 00 ef 01 40 00 00 3f 20 f0 01 02 00 00 00 00 00 00 50 e4 c1 c1 df 40 02 00 c0 02 00 09 79 09 04 c7 01 e1 4e 002 3f 00 f0 0 01 00 00 d9 25 c2 c1 df 40 02 00 c0 03 00 09 02 19 25 3c 00 22 6a 01 デシベル 09 f0 04 05 00 00 00 00 00 00 62 67 c2 c1 df 40 02 00 c0 04 0 0 2 109 22 6a 01 デシベル 09 f0 01 07 00 00 00 00 00 00 ec a8 c2 c1 df 40 02 00 c0 05 00 13 7b 06 04 a4 0d 91 0c b6 c4 4e 02 3f 00 01 00 00 f8 000 00 00 00 00 00 6b 13 c3 c1 df 40 02 00 c0 06 00 13 7b 2b 04 93 0d 43 13 b6 c4 2e 00 3f 00 01 00 00 00 00 00 00 f0 01 090 00 0 e0 00 03 c1 9 7b 2b 04 93 0d 00 df 40 02 00 c0 07 00 13 7b 4f 04 d6 0d 2e fc b5 c4 2e 00 3f 00 01 00 00 00 00 00 00 f0 01 05 00 00 00 00 0000 68 e8 c3 c1 df 40 02 00 c0 08 00 13 7b 55 04 ca 0d 7b 10 b6 c4 29 00 3f 00 01 00 00 00 00 00 00 f0 01 06 00 00 00 00 00 00 e7 d 52 c40 c1 c0 09 00 13 7b 46 04 f1 0d c5 15 b6 c4 2e 00 3f 00 01 00 00 00 00 00 00

これらのシーケンスを持つすべてのパターンを取得してファイルに保存するまで、これらのパターンをコピーし、その後f0に続くものを次のようにコピーすることを見つけたときはいつでも必要です。0101f0

そして、これらのパターンとそれf0に続く01もの02を次のパターンまでコピーし、f0これらのシーケンスを持つすべてのパターンを取得して別のファイルに保存するまで続けます。

などf0 01 03などf0 01 09

これが私がやろうとしたことです

String filename = "C:\\tm09888.123";
FileInputStream in = null;
int readHexFile = 0; 
char hexToChar = ' ';
String[] bytes = new String[10];

try
{            
    in = new FileInputStream(filename); 

    while((readHexFile = in.read()) != -1)
    {       
        if (Integer.toHexString(readHexFile).equals("f0"))
        {
            System.out.print("\n\n\n");
        }
        System.out.print(Integer.toHexString(readHexFile) + " ");
    }
}
catch (IOException ex)
{
    Logger.getLogger(NARSSTest.class.getName()).log(Level.SEVERE, null, ex);
}  

}

からすべてのパターンを分割しましたf0が、プログラムに次のパターンを監視するように指示するにはどうすればf0よいですか01 01

そして、これらすべてのパターンを別のファイルに保存します

4

1 に答える 1

0

正規表現を調べることをお勧めします。これらはデータ内のパターンを検索する強力な方法であるため、ここで達成しようとしていることに最適です。それらを使用してファイル内で " " を検索し、次の " " ブロックf0 0\d 0\dを含まないまでのすべての値を取得できます。f0 0\d 0\d

于 2012-12-24T21:18:26.787 に答える