当前位置: 首页 > news >正文

java BCC异或校验例子

需求

对一个十六进制的字符串进行BCC校验

方法

    private static String XORCheck(String rawMsg) {
        // 16进制字符串需要转成10进制数组进行校验,然后再返回16进制字符串用于与原来的字符匹配
        byte[] bytes = HexDumpMsgFormat.hexStr2DesBytes(rawMsg);
        return BytesUtil.bytesXORCheck(bytes);
    }

    /**
     * 十六进制字符串转10进制字节数组
     */
    public static byte[] hexStr2DesBytes(String hex) {
        int len = (hex.length() / 2);
        byte[] result = new byte[len];
        int k = 0;
        for (int i = 0; i < len; i++) {
            byte high = (byte) (Character.digit(hex.charAt(k), 16) & 0xff);
            byte low = (byte) (Character.digit(hex.charAt(k + 1), 16) & 0xff);
            result[i] = (byte) (high << 4 | low);
            k += 2;
        }
        return result;
    }

 如果是普通的字符串

bytesXORCheck("xxxxx".getBytes())

    /**
     * OXR校验
     * 在线BBC校验: http://www.ip33.com/bcc.html
     *
     * @param bytes
     * @return
     */
    public static String bytesXORCheck(byte[] bytes) {
        int nAll = 0;
        for (int nTemp : bytes) {
            nAll = nAll ^ nTemp;
        }
        return String.format("%02X", nAll & 0xff);
    }

验证

BCC校验(异或校验)在线计算_ip33.com

BCC一般是对前端内容校验,然后拼到最后,给设备下发指令。 

相关文章:

  • 使用Mockito实现单元测试
  • Bootstrap:图标库的安装及其使用
  • spring boot和spring cloud的区别
  • 【0016】Python数据类型-不可变集合详解
  • Retouch Pro 3.2.0汉化版深度解析:AI智能人像修图新利器
  • 开源许可证通俗、简洁介绍
  • K8s 1.27.1 实战系列(八)Service
  • 5G基本概念
  • fiddler+雷电模拟器(安卓9)+https配置
  • 计算机网络--访问一个网页的全过程
  • 从Manus看网络安全:通用AI智能体重构安全运营
  • gdb调试以及常用相关工具(hexdump\objdump等)
  • Node.js与VUE安装
  • 化工厂防爆气象站:为石油化工、天然气等领域提供安全保障
  • 在 Axios 中设置代理
  • BGP实验(一)IBGP全互联配置
  • Android TCP封装工具类
  • 【Linux docker】关于Docker 守护程序配置远程访问,安全认证以及idea连接。
  • 高效获取历史行情数据:xtquant的实战应用
  • SpringCloud——CircuitBreaker断路器
  • 新消费观察| 零售品牌 “走出去” ,如何开辟“新蓝海”?
  • 债券市场“科技板”来了:哪些机构能尝鲜,重点支持哪些领域
  • 李云泽:将尽快推出支持小微企业民营企业融资一揽子政策
  • 安赛乐米塔尔深化在华战略布局,VAMA总经理:做中国汽车板竞争力前三
  • 干细胞从科研到市场应用有多远?发展还面临何挑战?
  • 伊朗港口爆炸事故遇难人数最终确定为57人