Hilfe bei Dekodierung von Checksummen Berechnung

#7311722
Lesenswert?

Moin,

Axo, Jan V. == Michi.

Jan V. schrieb:

Dergute W. schrieb:

Was willst du denn dekodieren?

Den C-Code. Wie die Checksumme nun genau berechnet wird.

Puh, das ist halt etwas schwierig, wenn du kein C kannst. Kannst du irgendeine andere Programmiersprache?

CRC ist in jeder Sprache immer ein lustiges Geschiebe und ver-xordern. Manchmal mit Tabelle (auf mehr als 1bit Basis), manchmal ohne, so wie hier auf 1bit Basis. Mal ganz unter uns: Ich kann zwar C und weiss ungefaehr was es mit CRC auf sich hat, aber ich koennte ausm Stegreif so ein Programm eher nicht schreiben. Wenn ich wirklich die Innereien von sowas selber verstehen will/muss, muss ich mich jedesmal neu durch den ollen "Painless Guide" quaelen. Danach vergesse ich das immer ziemlich schnell. Aber nicht weitersagen ;-)

Gruss WK

#7311915
Lesenswert?

Setze den crc wert auf 255. Fuer jedes datenbyte, ueber das du den CRC berechnen willst, beginnend mit dem ersten Byte und hier aufhoerend mit dem 2.Byte tust du: Verknuepfe den crc wert mittels xor mit dem aktuellen Byte. Und jetzt genau 8mal: wenn das MSB von crc gesetzt ist, dann wird der neue Wert von crc so berechnet: der alte wert von crc wird um eine binaerstelle nach links geschoben, dann mit der Konstanten 0x31u, die da auf dezimal heissen wuerde: 49, exclusiv oder verknuepft. sollte das MSB von crc nicht gesetzt sein, dann wird der neue Wert von crc so berechnet: der alte wert von crc wird um eine binaerstelle nach links geschoben so, wenn das jetzt 8mal passiert ist, und alle (hier beiden) datenbytes zur Berechnung herangezogen wurden, dann und nur dann ist crc der wert und der wert ist crc. Gepriesen sind die Skifahrer. (Mann, muss mir fade sein)

Gruss WK

#7312131
Lesenswert?

  1. Du füllst 8 Flip-Flops mit 1-en.
  2. Dann verXORst Du den Inhalt mit dem nächsten zu verarbeitenden Datenbyte. (Beim 1. Durchlauf natürlich das 1. Byte!)
  3. Dann stellst Du Dir die Flip-Flops wie im Bild verschaltet mit den XORs vor und gibst allen FFs gleichzeitig hintereinander 8 Takte.
  4. Dann gehst Du zu 2, sofern Du noch Daten hast.
  5. In den 8 Registern steht nun Deine CRC.

Gruß Jobst

Angehängte Dateien:

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