DLT645校验位

 

DLT645检验位是把检验位之前的所有16进制接起来去最后两位数

/**
 * DLT645校验码
 */
public class DLT655 {

    public static String makeCheck(String data) {

        if (data == null || data.equals("")) {
            return "";
        }
        int total = 0;
        int len = data.length();
        int num = 0;
        while (num < len) {
            String s = data.substring(num, num + 2);
            total += Integer.parseInt(s, 16);
            num = num + 2;
        }
        /**
         * 用256求余最大是255,即16进制的FF
         */
        int mod = total % 256;
        String hex = Integer.toHexString(mod);
        len = hex.length();
        // 如果不够校验位的长度,补0,这里用的是两位校验
        if (len < 2) {
            hex = "0" + hex;
        }
        return hex.toUpperCase()+"16";
    }

}

 

你可能感兴趣的:(后台,java,协议)