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