4 Stimmen

CRC-4-Implementierung in C#

Ich habe das Netz für eine C#-Implementierung der 4-Bit-zyklische Redundanzprüfung (CRC-4-ITU) gesucht, aber bisher war ich erfolglos.

Gibt es jemanden, der mir eine Referenzimplementierung von CRC-4-ITU geben kann? Vorzugsweise mit dem Standard-Polynom, wenn es ein Standard-Polynom gibt (ich habe die Spezifikation gelesen auf die wikipedia hinweist wie die CRC4-Spezifikation, ohne eine Definition des Polynoms zu finden).

Ich wäre auch sehr dankbar für eine Art von Testsuite oder Testdaten, um eine CRC4-Implementierung zu überprüfen.

Gracias.

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.

3voto

Robert Harvey Punkte 173098

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."

0 Stimmen

Dieses geniale Tool erzeugt C-Code für beliebige Polynome! (Sie wollen 10011) Sollte leicht in C# zu konvertieren sein: ghsi.de/CRC/index.php

0 Stimmen

Die oben erwähnte Seite wird verschoben nach: ghsi.de/seiten/Unterseiten/Online%20CRC%20Calculation

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X