CRC-Tabelle berechnen

OP #3142661
Lesenswert?
• ▲
▼
Moin,

ich bin gerade dabei mir einen Generator/Tester für 
CRC-Tabellen/Polynome zu basteln (In AutoIt) und bin dabei irgednwie auf 
wiedersprüchliche informationen gestoßen.

Ich habe eine CRC-Tabelle für das Polynom x8+ x5+ x3+ x2+ x1+ x0:
1
00, 2F, 5E, 71, BC, 93, E2, CD, 
2
57, 78, 09, 26, EB, C4, B5, 9A...
Diese ist bereits im Einsatz und funktioniert auch mit Geräten die nicht 
von mir programmiert wurden. Von da geh ich mal davon auß, dass diese 
stimmt.

Mit dieser Funktion bekomme ich auch genau diese Tabelle raus 
(for-schleife 0-255):
1
Func MakeCRC_X853210($BitString)
2
   
3
   Local $CRC[8]=[0,0,0,0,0,0,0,0]
4
   Local $i;
5
   Local $Invert;
6
   for $i=0 to (UBound($BitString)-1) step 1
7
      
8
      $Invert = BitXOR(($BitString[$i]),$CRC[7])
9
    
10
      $CRC[7] = $CRC[6]
11
      $CRC[6] = $CRC[5]
12
      $CRC[5] = BitXOR($CRC[4], $Invert)
13
      $CRC[4] = $CRC[3]
14
      $CRC[3] = BitXOR($CRC[2], $Invert)
15
      $CRC[2] = BitXOR($CRC[1], $Invert)
16
      $CRC[1] = BitXOR($CRC[0], $Invert)
17
      $CRC[0] = $Invert                ; Übertrag 8
18
   Next
19
   return($CRC)
20
EndFunc
Deckt sich auch mit dem was hier berechnet wird:
http://ghsi.de/CRC/index.php?Polynom=100101111&Message=128%0D%0A%0D%0A%0D%0A

Für das Polynom
x8+x5+x4+1
Sollte der Code also so aussehen:
1
Func MakeCRC_X853210($BitString)
2
   
3
   Local $CRC[8]=[0,0,0,0,0,0,0,0]
4
   Local $i;
5
   Local $Invert;
6
   for $i=0 to (UBound($BitString)-1) step 1
7
      
8
      $Invert = BitXOR(($BitString[$i]),$CRC[7])
9
    
10
      $CRC[7] = $CRC[6]
11
      $CRC[6] = $CRC[5]
12
      $CRC[5] = BitXOR($CRC[4], $Invert)
13
      $CRC[4] = BitXOR($CRC[3], $Invert)
14
      $CRC[3] = $CRC[2]
15
      $CRC[2] = $CRC[1]
16
      $CRC[1] = $CRC[0]
17
      $CRC[0] = $Invert
18

19
   Next
20
   return($CRC)
21
EndFunc

Die Tabelle die da rauskommt schaut dann so aus:
1
0x00, 0x31, 0x62, 0x53, 0xC4, 0xF5, 0xA6, 0x97, 
2
0xB9, 0x88, 0xDB, 0xEA, 0x7D, 0x4C, 0x1F, 0x2E,

Was aber irgendwie keine ähnlichkeit hat mit der Tabelle von 
Dallas/Maxim
die z.B. hier rumgeistert, die aber das selbe Polynom verwenden soll...:
Beitrag "CRC8 / OneWire Frage"

Was stimmt denn nun?

Die Werte aus der Tabelle von Dallas passen auch nicht zu dem 
CRC-Cecker-link von oben..

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.