0

我想读取一个文件,其中数据包存储为十六进制文件并将它们存储在数组中。例如,这里有三个块,我需要将它们存储在 3 个单独的数组中。数组应包含这些十六进制字符串。有人可以告诉我正确的方法吗?我尝试使用缓冲读取器和字符串缓冲区,但无法正确实现,因为每个块都需要放在不同的数组中。

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 fa 00 0 0 0 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 a1a a2 9e b04 7 6a 直流 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 fa 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(' ');

您还应该使用 StringBuilder 而不是 StringBuffer。

于 2012-04-15T02:35:44.290 回答
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 回答
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 回答