Jireh 的个人博客 Jireh 的个人博客

记录分享生活、程序、信息的精彩人生

目录
Java 16进制校验码计算
/  

Java 16进制校验码计算

Java 16进制校验码计算

规则:从帧头开始按字节求和得出的结果对256求余

/**
     * 从帧头开始按字节求和得出的结果对256求余
     * @param data 16进制数据
     * @return hex
     */
    public static String makeCheckSum(String data) {
        if (data == null || data.equals("")) {
            return "";
        }
        data = data.replaceAll(" ", "");
        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;
    }

标题:Java 16进制校验码计算
作者:Jireh
地址:https://lyile.cn/articles/2020/05/28/1590632115579.html
本作品由 Jireh 采用 署名 – 非商业性使用 – 禁止演绎 4.0 国际许可协议进行许可,转载请注明出处。