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
  • 下载

CRC16 三种算法及c实现

标准CRC生成多项式如下表:   名称       生成多项式            &...

CRC16 算法及c实现

标准CRC生成多项式如下表:   名称       生成多项式            &...

C#GHI+编程初探.pdf

  • 2010-12-03 10:21
  • 110KB
  • 下载

CRC16 三种算法及c实现

CRC16 三种算法及c实现     标准CRC生成多项式如下表:   名称       生成多项式    &...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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