String tlv="80037665658104727265668203726564";
我想打印上面的字符串TLV,用下面的空格分隔
8003766565 810472726566 8203726564
例如。 80 - 标签 03 - Lengh 766565 - 值(每2位数字,如一个字节,总共3个字节长度)
请在上面帮助我。
答案 0 :(得分:0)
public static String tlv(String str1)
{
String slim="";
String str=str1+"00";
int tlvlen=0;
while(str.substring(tlvlen+0,tlvlen+2).matches("AA|A4|A9|1E|C0|C1|C2|C3|C4|C5|C6|C7|C8|C9|CA|CB|CC|A8|A0|4F|50|51|52|53|54|61|73|80|81|82|83|84|85|86|87|88|89|95"))
{
int len=Convertion.hex2decimal(str.substring(tlvlen+2,tlvlen+4))*2+4;
String tlv=str.substring(tlvlen,len+tlvlen);
slim+=tlv+" ";
tlvlen=tlv.length()+tlvlen;
}
return slim;
}
听到convertion类有hex2decimal方法。此方法将长度十六进制转换为十进制。
public class Convertion {
public static int hex2decimal(String s) {
String digits = "0123456789ABCDEF";
s = s.toUpperCase();
int val = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
int d = digits.indexOf(c);
val = 16 * val + d;
}
return val;
}}