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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren