Hallo Leute, ich habe anscheinend ein Problem mit einem CRC8 Algorithmus, leider habe ich nicht sehr viel Informationen dazu, ich habe nur ein Beispiel und das Generatorpolynom, allerdings komme ich mit dem anscheinend üblichen Algorithmus von Wiki nicht an das richtige Ergebnis. Hier mal das Beispiel: Polynom: 1 0010 1111 Daten: 1110 1001 0101 Verschieberichtung: nach links --> Ergebnis: 1101 0101 Ich habe schon alles probiert: also Daten von rückwärts nach vorwärts, das Ergebnis am Ende nochmal mit dem Polynom zu xor'n usw. leider kam ich nie auf das angegebene Ergebnis. Mir ist auch noch nicht ganz klar was mit dieser Verschieberichtung gemeint ist, ich nehme fast an, dass der Fehler dort begraben ist. Leider habe ich bisher diesbezüglich noch keine Erklärung gefunden. Hättet ihr vielleicht einen Tipp für mich? Wäre dankbar für jede Anregung! :) tüftler
:
Verschoben durch Admin
Ich würde das ASCII Polynom und die ASCII Daten erstmal nach Hex umrechnen und dann schauen wieviel Bits man streichen kann. Am Ende sollten es nur acht Bits sein und der Rest ist dann rauschen ...
Danke CarbageCollection, sowas hatte ich mir auch schon überlegt, aber wie weiß ich denn von welcher Seite ich streichen muss? Der 1er am Anfang oder der am Ende? Und was meinst du mit Rauschen, schließlich geht es ja um die Berechnung...
Ist das Generatorpolynom in seiner Breite nicht immer identisch zum Algorithmus ? Also 8 Bit CRC und 8 Bit Generatorpolynom ? Da scheint sich bei dir ein Fehler eingeschlichen zu haben. Worum geht es überhaupt ?
Karl K. schrieb: > Ist das Generatorpolynom in seiner Breite nicht immer identisch zum > Algorithmus ? Also 8 Bit CRC und 8 Bit Generatorpolynom ? Da scheint > sich bei dir ein Fehler eingeschlichen zu haben. Also als Polynom habe ich: x^8+x^5+x3+x^2+x^1+x^0 was ich als 1 0010 1111 interpretiert habe oder stimmt das so nicht?
Das Generatorpolynom lautet in der Tat x^8+x^5+x3+x^2+x^1+x^0 und ist somit 9 Bit lang. Allerdings wird die letzte 1 weggelassen. Das Generatorpolynom lautet so 0010 1111. Die Daten durch dieses Generatorpolynom zu teilen müsste zum gewünschten Ergebnis führen. Viel Erfolg! P.S.: Ein ähnliches Problem hatte ich beim USB-Generatorpolynom, die letzte 1 wegzulassen und High- und Low-Byte des Polynoms zu tauschen (weil in diesem Fall so spezifiziert) war die Lösung.
patrick schrieb: > Das Generatorpolynom lautet in der Tat x^8+x^5+x3+x^2+x^1+x^0 und ist > somit 9 Bit lang. Allerdings wird die letzte 1 weggelassen. Das > Generatorpolynom lautet so 0010 1111. Die Daten durch dieses > Generatorpolynom zu teilen müsste zum gewünschten Ergebnis führen. Viel > Erfolg! > > P.S.: Ein ähnliches Problem hatte ich beim USB-Generatorpolynom, die > letzte 1 wegzulassen und High- und Low-Byte des Polynoms zu tauschen > (weil in diesem Fall so spezifiziert) war die Lösung. Vielen Dank, leider komme ich noch immmer nicht auf das richtige Ergebnis. Ganz versthe ich das mit dem Generatorpolynom noch nicht und wie ich damit umzugehen habe. Vielleicht gehen wir mal den Algorithmus durch: 1) Ich nehme meine Nutzdaten und hänge 8 0 daran, da Polynom 8. Ordnung. 2) Ich gehe zur ersten 1 der Nutzdaten ganz links und schreibe mein Generatorpolynom darunter, das mit 1 beginnt. 3) Ich xor'e die beiden Zeilen. 4) Schreibe ich das Generatorpolynom wieder unter das Ergebnis und hole die nächsten Stellen von oben runter damit ich sie wieder xor'en kann. usw. so lange bis ich rechts angekommen bin und der Rest sollte mein CRC sein, wenn er weniger als 8 Bit hat, hänge ich noch ein paar Nullen daran... Wie gesagt habe ich schon einiges versucht mit unterschiedlichen Reihenfolgen, vertauschten Bytes usw. Fällt euch vielleicht noch ein anderer Algorithmus ein, den ich noch probieren könnte? LG tüftler
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.