200分求C#代码 [C# CRC16 校验问题] (有源C++ 代码)
200分求教以下要求的C# 代码,最后入口要封装成一个。
回答的人多了,都符合要求的话 在追加100分。
原意描述:
CRC 是先调入一值是全“1”的 16 位寄存器,然后调用一过程将消息中连续的 8 位字
节各当前寄存器中的值进行处理。仅每个字符中的 8Bit 数据对 CRC 有效,起始位和停止位
以及奇偶校验位均无效。
CRC 校验字节的生成步骤如下:
① 装一个 16 位寄存器,所有数位均为 1。
② 取被校验串的一个字节与 16 位寄存器的高位字节进行“异或”运算。运算结果放
入这个 16 位寄存器。
③ 把这个 16 寄存器向右移一位。
④ 若向右(标记位)移出的数位是 1,则生成多项式 1010 0000 0000 0001 和这个寄
存器进行“异或”运算;若向右移出的数位是 0,则返回③。
⑤ 重复③和④,直至移出 8 位。
⑥ 取被校验串的下一个字节
⑦ 重复③~⑥,直至被校验串的所有字节均与 16 位寄存器进行“异或”运算,并移位
8 次。
⑧ 这个 16 位寄存器的内容即 2 字节 CRC 错误校验码。
校验码按照先高字节后低字节的顺序存放。
C++ 代码