🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 组件源码 ``` /** * <b>方法描述:</b> 获取CRC16码 <br/> * <b>创建者:</b> admin <br/> * <b>创建时间:</b> 2018-04-16 11:20:59 <br/> * * @param str * 入参|输入校验字符串|{@link java.lang.String} * @param code * 出参|校验码|{@link java.lang.String} * @return 0 失败<br/> * 1 成功<br/> */ @Component(label = "获取CRC16码", style = "判断型", type = "同步组件", version = "1.0.0", deprecated = false, author = "admin", date = "2018-04-16 11:20:59") @InParams(param = { @Param(name = "str", comment = "输入校验字符串", type = java.lang.String.class) }) @OutParams(param = { @Param(name = "code", comment = "校验码", type = java.lang.String.class) }) @Returns(returns = { @Return(id = "0", desp = "失败"), @Return(id = "1", desp = "成功") }) public static ResultBase P_getCrc16(String str) { if (StringUtil.isBlank(str)) return ResultBase.newFailureResult("TPTS0007", "校验数据参数不能为空"); byte[] data = str.getBytes(); int high; int flag; // 16位寄存器,所有数位均为1 int wcrc = 0xffff; for (int i = 0; i < data.length; i++) { // 16 位寄存器的高位字节 high = wcrc >> 8; // 取被校验串的一个字节与 16 位寄存器的高位字节进行“异或”运算 wcrc = high ^ data[i]; for (int j = 0; j < 8; j++) { flag = wcrc & 0x0001; // 把这个 16 寄存器向右移一位 wcrc = wcrc >> 1; // 若向右(标记位)移出的数位是 1,则生成多项式 1010 0000 0000 0001 和这个寄存器进行“异或”运算 if (flag == 1) wcrc ^= 0xa001; } } return ResultBase.newSuccessResult(Integer.toHexString(wcrc)); } ``` # 交易中组件使用方式 ![](https://img.kancloud.cn/c3/b8/c3b84f8b777ddadfd5c3babe328e4bf1_1869x892.png) # 参数说明及示例 ## 入口参数 输入校验字符串:输入字符串,示例: `"abc"` ## 出口参数 校验码:返回经过运算后的校验码,示例: `__INNER__["result"]`