CRC-16算法实现

  为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余检验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;
        }

程序为:

程序源码为:




[本日志由 somarange 于 2010-03-21 04:33 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: C# 计算机网络 CRC
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.