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)

posted @ 2011-06-14 14:28  董雨  阅读(293)  评论(0编辑  收藏  举报