CRC算法 +c#

原创 2007年09月21日 11:05:00

/// <summary>
  /// CRC 效验
  /// 快速检测算法
  /// </summary>
  public class CRC32{

    protected uint[] crc32Table;

    /// <summary>
    /// 构造:初始化效验表
    /// </summary>
    public CRC32() {
      const uint ulPolynomial = 0xEDB88320;
      uint dwCrc;
      crc32Table = new uint[256];
      int i,j;
      for(i = 0; i < 256; i++) {
        dwCrc = (uint)i;
        for(j = 8; j > 0; j--) {
          if((dwCrc & 1)==1)
            dwCrc = (dwCrc >> 1) ^ ulPolynomial;
          else
            dwCrc >>= 1;
        }
        crc32Table[i] = dwCrc;
      }
    }

    /// <summary>
    /// 字节数组效验
    /// </summary>
    /// <param name="buffer">ref 字节数组</param>
    /// <returns></returns>
    public uint ByteCRC(ref byte[] buffer) {
      uint ulCRC = 0xffffffff;
      uint len;
      len = (uint)buffer.Length;
      for (uint buffptr=0; buffptr < len; buffptr++) {
             uint tabPtr = ulCRC & 0xFF;
        tabPtr = tabPtr ^ buffer[buffptr];
        ulCRC = ulCRC >> 8;
        ulCRC = ulCRC ^ crc32Table[tabPtr];
      }
      return (ulCRC ^ 0xffffffff);
    }


    /// <summary>
    /// 字符串效验
    /// </summary>
    /// <param name="sInputString">字符串</param>
    /// <returns></returns>
    public uint StringCRC(string sInputString){
      byte[] buffer = Encoding.Default.GetBytes(sInputString);
      return ByteCRC(ref buffer);
    }

    /// <summary>
    /// 文件效验
    /// </summary>
    /// <param name="sInputFilename">输入文件</param>
    /// <returns></returns>
    public uint FileCRC(string sInputFilename){
      FileStream inFile = new System.IO.FileStream(sInputFilename, System.IO.FileMode.Open,  System.IO.FileAccess.Read);
      byte[] bInput = new byte[inFile.Length];
      inFile.Read(bInput,0,bInput.Length);
      inFile.Close();

      return ByteCRC(ref bInput);
    }

  } 

C# + Mapx 地图系统

  • 2007年07月20日 22:45
  • 1.27MB
  • 下载

基于.net的C#+SQL学生选课系统

  • 2008年11月19日 18:28
  • 67KB
  • 下载

CRC16 算法及c实现

标准CRC生成多项式如下表:   名称       生成多项式             简记式*  标准引用    CRC-4       x4+x+1                  3   ...

C#+sql简单的留言板

  • 2014年08月21日 20:27
  • 797KB
  • 下载

CRC32校验算法-C实现

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 CRC校验实用程序库在数据存...
  • weed_hz
  • weed_hz
  • 2014年05月06日 15:19
  • 1203

C#2005+SQL2000 教务管理系统

  • 2008年12月12日 10:31
  • 5.04MB
  • 下载

C#GHI+编程初探.pdf

  • 2010年12月03日 10:21
  • 110KB
  • 下载

CRC16 三种算法及c实现

CRC16 三种算法及c实现     标准CRC生成多项式如下表:   名称       生成多项式             简记式*  标准引用    CRC-4  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CRC算法 +c#
举报原因:
原因补充:

(最多只允许输入30个字)