在C#中实现CRC32算法。

 

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.IO;

namespace  GetCRC32
... {
    
class  CRC32Cls
    
... {
        
protected   ulong [] Crc32Table;
        
// 生成CRC32码表
         public   void  GetCRC32Table() 
        
... {
            
ulong  Crc;
            Crc32Table 
=   new   ulong [ 256 ];
            
int  i,j;
            
for (i  =   0 ;i  <   256 ; i ++
            
... {
                Crc 
=  ( ulong )i;
                
for  (j  =   8 ; j  >   0 ; j -- )
                
... {
                    
if  ((Crc  &   1 ==   1 )
                        Crc 
=  (Crc  >>   1 ^   0xEDB88320 ;
                    
else
                        Crc  >>=   1 ;
                }

                Crc32Table[i]  =  Crc;
            }

        }

        
// 获取字符串的CRC32校验值
         public   ulong  GetCRC32Str( string  sInputString)
        
... {
            
// 生成码表
            GetCRC32Table();
            
byte [] buffer  =  System.Text.ASCIIEncoding.ASCII.GetBytes(sInputString);
            
ulong  value  =   0xffffffff ;
            
int  len  =  buffer.Length;
            
for  ( int  i  =   0 ; i  <  len; i ++ )
            
... {
                value 
=  (value  >>   8 ^  Crc32Table[(value  &   0xFF ) ^  buffer[i]];
            }

             return  value  ^   0xffffffff
        }

    }
}

调用方法:

         private   void  button1_Click( object  sender, EventArgs e)
        
... {
            CRC32Cls CRC 
=   new  CRC32Cls();
            textBox2.Text 
=  String.Format( " {0:X8} " , CRC.GetCRC32Str(textBox1.Text));
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值