题目:
难点:
主要是字符串的处理,需要做16进制的转换,把字符串拼接,找i位置
解答:
import java.util.*;
public class TLV2{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
while(scan.hasNextLine()){
String match = scan.nextLine();
String[] s = scan.nextLine().split(" ");//读入一整个字符串到字符数组
String tag = "";
int length = 0;
String value = "";
String res ="";//返回的报文
//上面一共三个部分表示报文的编号,长度,具体的数值
for(int i=0;i<s.length;){
res="";//当没匹配,先清空
//这里控制一次走到一段报文中
//走到新的分段,重新写一遍
tag = s[i];
length = Integer.valueOf(s[i+2]+s[i+1],16);//转换为2进制的长度
if(tag.equals(match)){
for(int j=0;j<length;j++){
//按位置去取,然后拼接起来
res += s[j+i+2+1]+" ";
}
System.out.println(res.trim());
break;
}else{
i = i+length+2+1;
}
//到这里就把res拼接好了,判断是不是需要的tag
}
}
}
}