如何在String中的TLV(Tag Length Value)之间添加空格?

时间:2017-08-02 04:50:43

标签: java

String tlv="80037665658104727265668203726564";

我想打印上面的字符串TLV,用下面的空格分隔

8003766565 810472726566 8203726564

例如。 80 - 标签     03 - Lengh     766565 - 值(每2位数字,如一个字节,总共3个字节长度)

请在上面帮助我。

1 个答案:

答案 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;
}}