El Zyklische Redundanzprüfung Laut Wikipedia-Artikel lautet das Polynom x^4 + x + 1. Es gibt auch eine ziemlich gute Beschreibung, wie die Prüfsumme berechnet wird.
Hier ist ein Algorithmus für CRC16. Ich weiß, es ist nicht das, wonach Sie gefragt haben, aber es sollte relativ einfach sein, ihn für 4 Bits anzupassen.
public ushort calculate(byte[] bytes)
{
int crc = 0xFFFF; // initial value
// loop, calculating CRC for each byte of the string
for (int byteIndex = 0; byteIndex < bytes.Length; byteIndex++)
{
ushort bit = 0x80; // initialize bit currently being tested
for (int bitIndex = 0; bitIndex < 8; bitIndex++)
{
bool xorFlag = ((crc & 0x8000) == 0x8000);
crc <<= 1;
if (((bytes[byteIndex] & bit) ^ (ushort)0xff) != (ushort)0xff)
{
crc = crc + 1;
}
if (xorFlag)
{
crc = crc ^ 0x1021;
}
bit >>= 1;
}
}
return (ushort)crc;
}
http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_24775723.html
Außerdem gibt es diesen Leitfaden zur Berechnung von Prüfsummen:
http://www.ross.net/crc/download/crc_v3.txt
"Alles, was Sie schon immer über CRC-Algorithmen wissen wollten, sich aber zu fragen, aus Angst, dass Fehler in Ihrem Verständnis entdeckt werden könnten."
3 Stimmen
Mein Gott, Google ist unheimlich. Dies ist das 6. Google-Ergebnis für "CRC-4-ITU" und es wurde 7 Minuten nach seiner Veröffentlichung indiziert.
1 Stimmen
Google und SO haben eine Art Vereinbarung getroffen. Vielleicht ist es einfach die SiteMap-Datei und die Tatsache, dass SO einen hohen GoogleRank hat, also wichtiger ist als MyLittleDorkySite.com.