当前位置:首页 > Windows程序 > 正文

HJ212 CRC 16 (C#)

2024-03-31 Windows程序

CRC16 校验寄存器赋值为 0xFFFF;

取被校验串的第一个字节赋值给临时寄存器;

临时寄存器与 CRC16 校验寄存器的高位字节进行“异或”运算,赋值给 CRC16 校验寄存器;

取 CRC16 校验寄存器最后一位赋值给检测寄存器;

把 CRC16 校验寄存器右移一位;

若检测寄存器值为 1,CRC16 校验寄存器与多项式 0xA001 进行“异或”运算,,赋值给 CRC16 校验寄存器;

重复步骤 4~6,直至移出 8 位;

取被校验串的下一个字节赋值给临时寄存器;

重复步骤 3~8,直至被校验串的所有字节均被校验;

返回 CRC16 校验寄存器的值。

校验码按照先高字节后低字节的顺序存放。

代码 public static string GetHj212Crc16(byte[] bytes) { int crcRegister = 0xFFFF; for (int i = 0; i < bytes.Length; i++) { crcRegister = (crcRegister >> 8) ^ bytes[i]; for (int j = 0; j < 8; j++) { int check = crcRegister & 0x0001; crcRegister >>= 1; if (check == 0x0001) { crcRegister ^= 0xA001; } } } string result = string.Format("{0:X}", crcRegister);//转十六进制 for (int i = result.Length; i < 4; i++)//补足 4 位 { result = "0" + result; } return result; }

代码地址:Hj212Crc16

标签:

原文地址:https://www.cnblogs.com/victorbu/p/10393148.html

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/47772.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494607访问次数
  • 建站天数
  • 友情链接