根据本站提供的代码
public uint GetCRC32(byte[] buffer)
{
int length = buffer.Length;
byte data;
uint crc = 0xf2; //初始值(16位举个例子0xFFFF,8位0xFF)
int i;
for (int j=0;j<length;j++)
{
data = buffer[j];
crc = (uint)(crc ^(data << 0)); //32位左移24位,16位左移8位,8位左移0位;
for (i = 0; i < 8; i++)
{
if ((crc & 0x80)== 0x80)//16位 0x8000 8位 0x80
{
crc = (crc << 1) ^ 0x1d;//多项式
}
else
{
crc <<= 1;
}
}
}
crc = crc ^ 0x00;// xor 异或值(与上面初始值类似,16位 0x0000 8位 0x00;
return crc;
}
private uint Reverse32(uint data)
{
byte i;
uint temp = 0;
for (i = 0; i < 32; i++)
{
temp |= ((data >> i) & 0x01) << (31 - i);
}
return temp;
}
提供的代码写的实际,但实际应用上,却发现输出的结果位数不匹配
希望各位指点迷津