0

パケットが16進ファイルとして保存されているファイルを読み取り、配列に保存したいと思います。たとえば、ここには3つのブロックがあり、それらを3つの別々の配列に格納する必要があります。配列には、これらの16進文字列が含まれている必要があります。誰かが私にそれを正しく行う方法をアドバイスしてもらえますか?バッファリーダーと文字列バッファを使用してみましたが、各ブロックを異なる配列に配置する必要があるため、適切に実装できませんでした。

00 04 75 8d 49 c7 00 01 03 cd 50 3c 08 00 45 00 00 30 07 28 40 00 80 06 00 00 c0 a8 ec 20 c0 a8 ec 1e 04 05 00 17 aa a2 9e b3 00 00 00 00 70 02 fa f0 e1 2b 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 17 04 05 aa 5a b0 04 aa a2 9e b4 70 12 16 d0 6a dc 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 07 29 40 00 80 06 00 00 c0 a8 ec 20 c0 a8 ec 1e 04 05 00 17 aa a2 9e b4 aa 5a b0 05 50 10 fa f0 59 ab 00 00

私はこれまでやりましたが、思い通りにできませんでした。特に各ブロックを区別したい。

    BufferedReader br=null;
    try{
    br = new BufferedReader(new FileReader(cmd));
    StringBuffer sb = new StringBuffer();
    String line;
            while((line = br.readLine())!= null)
            {
            sb.append(line);
            }
    String [] store = sb.toString().split(" ");
    pkt = store;
    }catch(IOException ie) {ie.printStackTrace();}
4

3 に答える 3

1

分割を機能させるには、行間にスペースを追加する必要があります。

sb.append(line).append(' ');

また、StringBuffer ではなく StringBuilder を使用する必要があります。

于 2012-04-15T02:35:44.290 に答える
0

必要なのは、すべてのパケットを配列リストに格納し、ループの最後で必要に応じて処理することです。

BufferedReader br=null;
ArrayList<String[]> pkts = new ArrayList<String[]>(); 

try{
        br = new BufferedReader(new FileReader(cmd));

        String line;
        while((line = br.readLine())!= null)
        {
            pkts.add(line.trim().toString().split(" "));
        }

}catch(IOException ie) {ie.printStackTrace();}

for(String[] pkt : pkts) {
    // process your hex string array 
}
于 2012-04-15T08:38:31.213 に答える
0

配列をリストに入れることができます。

    ArrayList<String[]> list = new ArrayList<String[]>();
    String line;
    while((line = br.readLine())!= null)
        { 
          if(!"".equals(line.trim())){
                   list.add(line.split(" "));
          }
        }
于 2012-04-15T03:25:39.487 に答える