public static UInt32 cal_crc(byte[] bdata, int len)
{
UInt32 dwPolynomial = 0x04c11db7;
UInt32 xbit;
UInt32 data;
UInt32 CRC = 0xFFFFFFFF; // init
int i = 0;
while (len-- > 0)
{
xbit = (UInt32)1 << 31;
data = bdata[i]; i++;
for (int bits = 0; bits < 32; bits++)
{
if ((CRC & 0x80000000) > 0)
{
CRC <<= 1;
CRC ^= dwPolynomial;
}
else
CRC <<= 1;
if ((data & xbit) > 0)
CRC ^= dwPolynomial;
xbit >>= 1;
}
}
return CRC;
}
}