CRC-16算法实现(转)
http://www.smgblog.cn/article/mywork/74.htm
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余检验CRC(Cylic Redundancy Check)的检错技术。
CRC运算的文字描述这里不再介绍。
用C#语言编写的CRC-16编码程序如下:
程序界面:
程序代码(算法部分):
//C#代码,genPoly为生成多项式(16进制)
private int genPoly = 0x18005;
private void byteFCS(ref int FCS, char ch)
{
FCS ^= (ch<<8);
for (int i = 0; i < 8; i++)
if ((FCS & 0x8000) >= 0x8000)
FCS = (FCS << 1) ^ genPoly;
else
FCS <<= 1;
FCS &= 0xffff;
}
private int blockFCS(string block)
{
int FCS = 0;
for (int i = 0; i < block.Length; i++)
{
char temp = block[i];
byteFCS(ref FCS, temp);
}
return FCS;
}
程序为: 点击下载(6.6 KB)
[2010-03-21 04:28 PM; 下载次数:135]
程序源码为: 点击下载(39.31 KB)