文件名称:C#计算CRC16校验码示例
文件大小:43KB
文件格式:RAR
更新时间:2014-11-28 11:18:17
C# CRC CRC16 源码
遇到要做个CRC校验,翻了一堆资料终于看明白了,内有详细注释,不是普通的词典法,是用算法计算出来的CRC,对于CRC16-CCITT,只需替换公式即可 /* CRC16实现原理 * * CRC16 | g(x)=x16+x15+x2+1 | 0x1,80,05 | 1,1000,0000,0000,0101 * * 由于在步骤<2>进行了取反,这里也要把公式反过来 * 0x8005 1000000000000101 * 0xA001 1010000000000001 * * 1.置16位CRC寄存器CRCFull全为1 * 2.数据message[i]一个字节8位与CRCFull异或,结果存在CRCFull(作用是取反) * 3.CRCFull最低位存在CRCLSB,CRCFull右移一位(向低位),用0填补最高位 * 4.检查原最低位即CRCLSB: * 1:CRCFull与多项式0xA001异或 * 0:重复步骤<3> * 5.重复步骤<3>和<4>,直到右移8次,处理完整个message[i]字节 * 6.重复步骤<2>到<5>,进行下一个字节8位数据的处理,直到(message.Length) * 7.最后得到的CRC寄存器CRCFull即为此数据的CRC16码 * * <取反避免了普通比特型算法使用左移后寄存器最低位要从下一个字节获取的麻烦> * */
【文件预览】:
WindowsFormsApplication1
----WindowsFormsApplication1()
--------bin()
--------Form1.Designer.cs(3KB)
--------Program.cs(505B)
--------obj()
--------Form1.cs(3KB)
--------Form1.resx(6KB)
--------WindowsFormsApplication1.csproj(4KB)
--------Properties()
----WindowsFormsApplication1.sln(914B)
----WindowsFormsApplication1.suo(21KB)