0

Java を使用してこの .dat ファイルを解析するのは非常に困難です。解析しようとしている .dat ファイルの形式を以下に示します。これらは、実際に私が取り組んでいるパケット ジェネレーター プログラムのパケットです。各パケットは、各ブロック間の改行で区切られます。パケット内の各バイトを 1 バイト [] に格納したい。私は BufferedReader readline() メソッドを使用して行ごとに移動しましたが、パケット全体を保存することにまだほとんど成功していません。ご協力いただきありがとうございます。

00 04 75 8d 49 c7 00 01 03 cd 50 3c 08 00 45 00 
00 30 08 0d 40 00 80 06 00 00 c0 a8 ec 20 c0 a8 
ec 1e 04 16 00 50 b8 63 45 fd 00 00 00 00 70 02 
fa f0 2b d7 00 00 02 04 05 b4 01 01 04 02 

00 01 03 cd 50 3c 00 01 03 dd 4c 2d 08 00 45 00 
00 30 00 00 40 00 40 06 e1 37 c0 a8 ec 1e c0 a8 
ec 20 00 50 04 16 e9 bb 68 bf b8 63 45 fe 70 12 
16 d0 bd 6b 00 00 02 04 05 b4 01 01 04 02 

00 04 75 8d 49 c7 00 01 03 cd 50 3c 08 00 45 00 
00 28 08 0f 40 00 80 06 00 00 c0 a8 ec 20 c0 a8 
ec 1e 04 16 00 50 b8 63 45 fe e9 bb 68 c0 50 10 
fa f0 59 ab 00 00 

00 04 75 8d 49 c7 00 01 03 cd 50 3c 08 00 45 00 
00 ed 08 10 40 00 80 06 00 00 c0 a8 ec 20 c0 a8 
ec 1e 04 16 00 50 b8 63 45 fe e9 bb 68 c0 50 18 
fa f0 5a 70 00 00 47 45 54 20 2f 20 48 54 54 50 
2f 31 2e 31 0d 0a 41 63 63 65 70 74 3a 20 2a 2f 
2a 0d 0a 41 63 63 65 70 74 2d 4c 61 6e 67 75 61 
67 65 3a 20 65 6e 2d 75 73 0d 0a 41 63 63 65 70 
74 2d 45 6e 63 6f 64 69 6e 67 3a 20 67 7a 69 70 
2c 20 64 65 66 6c 61 74 65 0d 0a 55 73 65 72 2d 
41 67 65 6e 74 3a 20 4d 6f 7a 69 6c 6c 61 2f 34 
2e 30 20 28 63 6f 6d 70 61 74 69 62 6c 65 3b 20 
4d 53 49 45 20 36 2e 30 3b 20 57 69 6e 64 6f 77 
73 20 4e 54 20 35 2e 30 29 0d 0a 48 6f 73 74 3a 
20 31 39 32 2e 31 36 38 2e 32 33 36 2e 33 30 0d 
0a 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 4b 65 65 
70 2d 41 6c 69 76 65 0d 0a 0d 0a 
4

1 に答える 1

0

配列は固定長であり、空白行に到達するまで何バイトになるかわからず、合計パケット数がわからないようです。

を使用してすべてのパケットを保持することをお勧めしArrayList<ArrayList<Byte>>ます。これは必要に応じて大きくなります。

イニシャルを作成するArrayList<Byte>次に、単純なループを作成します。

  • readline()null ではない間
  • 空白行をチェックする
  • 空白でない場合
    • を使用Stringして解析するString[]String.split()
    • 反復してString[]各 hex ペアを a に変換し、byteに追加しますArrayList<Btye>
  • 空白の場合
    • ArrayList<Byte>に追加ArrayList<ArrayList<Byte>>
    • 新しく作るArrayList<Byte>

readline()戻るとnullループが終了し、ArrayList<ArrayList<Byte>>すべてのパケットが含まれます。

于 2013-02-14T04:46:45.953 に答える