Hi,
ich wollte mal den kleinen Code hier (http://de.wikipedia.org/wiki/Zyklische_Redundanzprüfung#Berechnung_einer_CRC-32-Pr.C3.BCfsumme_in_C) in C# umsetzen.
Doch irgendwie liefert er mir andauernd einen falschen CRC-Wert.
Sieht jemand den Fehler?
Das zu übergebende uint-Array stellt eine Folge von Bits dar.
Gruss
M_Kay
ich wollte mal den kleinen Code hier (http://de.wikipedia.org/wiki/Zyklische_Redundanzprüfung#Berechnung_einer_CRC-32-Pr.C3.BCfsumme_in_C) in C# umsetzen.
Doch irgendwie liefert er mir andauernd einen falschen CRC-Wert.
Sieht jemand den Fehler?
Das zu übergebende uint-Array stellt eine Folge von Bits dar.
Code:
class CRC
{
//Dies entspricht dem CRC-32-Generator-Polynom
uint Poly = 0x04C11DB7;
public uint CRC32(uint[] message)
{
uint crc32 = 0;
for (int i = 0; i < message.Length; i++ )
{
uint hbit = ((crc32 & 0x80000000) == 0x10000000) ? (uint)1 : (uint)0;
if (hbit != message[i])
crc32 = (crc32 << 1) ^ Poly;
else
crc32 = crc32 << 1;
}
return crc32;
}
}
Gruss
M_Kay