package com.tarena.test.B20;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringJoiner;
/**
?* TLV解析Ⅰ
?* @author Administrator
?* 输入:
?* ?? ?第一行 ?31
?* ?第二层 ?32 01 00 AE 90 02 00 21 02 30 03 00 AB 32 31 31 02 00 32 33 01 22 CC
?*?
?*/
public class B27 {
?? ?
?? ?public static void main(String[] args) {
?? ??? ?try(Scanner sc = new Scanner(System.in)){
?? ??? ??? ?String tag = sc.nextLine();
?? ??? ??? ?String[] stream16 = sc.nextLine().split(" ");
?? ??? ??? ?System.out.println(resultStr(tag,stream16));
?? ??? ?}
?? ?}
?? ?
?? ?public static String resultStr(String tagKey,String[] stream16) {
?? ??? ?int index = 0;
?? ??? ?while(index<stream16.length) {
?? ??? ??? ?String tag = stream16[index++];
?? ??? ??? ?
?? ??? ??? ?String len1 = stream16[index++];
?? ??? ??? ?String len2 = stream16[index++];
?? ??? ??? ?//注意是 len2+len1 不是len1+len2
?? ??? ??? ?int len = Integer.parseInt(len2+len1, 16);
?? ??? ??? ?if(tag.equals(tagKey)) {
?? ??? ??? ??? ?StringJoiner sj = new StringJoiner(" ");
?? ??? ??? ??? ?for(int j=0;j<len;j++) {
?? ??? ??? ??? ??? ?sj.add(stream16[index++]);
?? ??? ??? ??? ?}
?? ??? ??? ??? ?return sj.toString();
?? ??? ??? ?}else {
?? ??? ??? ??? ?index+=len;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return null;
?? ?}
}
了解知识点
1、题目中 value 两个字节的拼接顺序,拼接想法 转进行进制转换时,数据是异常的