从文件中读取十六进制字符串块并将它们放入java中的数组中

时间:2012-04-15 02:12:01

标签: java

我想读取一个文件,其中数据包存储为十六进制文件并将它们存储在数组中。例如,这里有三个块,我需要将它们存储在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 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();}

3 个答案:

答案 0 :(得分:1)

您需要在线条之间添加一个空格才能使分割生效。

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

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

答案 1 :(得分:0)

您可以将数组放入列表中。

    ArrayList<String[]> list = new ArrayList<String[]>();
    String line;
    while((line = br.readLine())!= null)
        { 
          if(!"".equals(line.trim())){
                   list.add(line.split(" "));
          }
        }

答案 2 :(得分: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 
}