Hilfe bei CRC Check, Fehler in der Funktion.

Gast #1243250
Hallo,

ich versuche gerade eine CRC Auswertung in C zu schreiben.
Empfangen wird ein Byte-Array der Länge X, das Generatorpolynom ist mit 
x^8+x^2+x+1 festgelegt.

Folgende Funktion habe ich mir überlegt irgendwo ist aber noch der Wurm 
drin. ???
1
...
2
#define GENERATOR_POLYNOM   0b100000111
3
...
4

5
unsigned char CRC_Check(unsigned char* data, unsigned char length)
6
{
7
  unsigned short rest;
8
  unsigned short gpolynom=GENERATOR_POLYNOM;
9
  unsigned char i, byte;
10

11
  rest = *data<<1;     //1.Byte holen und um eins nach links schieben
12
  data++;
13
  rest |= *data>>7;    //MSB vom 2.Byte ist LSB von rest
14
  rest = rest^gpolynom;
15
  for( byte=1; byte<length; byte++)
16
  {
17
    for( i=1; i<=7; i++)
18
    {
19
      rest = (rest<<1);
20
      if( (*data<<i) & 0b10000000 ) //nächstes Bit anhängen
21
        rest |= 1;
22
      if( rest & 0b100000000 )  //ist rest durch gpolynom teilbar?
23
        rest = rest^gpolynom;
24
    }  
25
    data++;
26
  }
27
  return (unsigned char)rest;
28
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.