ich weiss, jeder hat es schon mal gehört, aber hat bitte jemand eine
Beschreibung
wie das mit der Modulo 256 Checksum funktioniert.
Viele Grüße aus München,
Chris
Hallo,
sagen wir, Du sollst von 5 Zahlen à 1 Bytes die mod256 Checksum ermitteln.
Das Ergebnis soll wieder eine 1 Byte Checksumzahl sein. Du addierst alle 10
zahlen und immer, wenn Du größer als 256 wirst, wirfst Du den Übertrag weg.
Ich rechne zur besseren Anschaulichkeit mal im Dezimalsystem Modulo 100.
15, 67, 34, 89, 56 gesucht, die Mod100 Checksum
15+67=82 alles noch OK
82+34=116 und nun wird der Übertrag (100) weggeworfen und es geht mit 16
weiter.
16+89=105 das selbe wie oben, es geht mit 5 weiter
5+56=61 Die Checksum ist hier also 61.
Dieses "Weglassen" des Übertrags geht im Microprozessor von selbst, wenn man
auf einer 1 byte maschine (256 möglichkeiten) einfach alle (beliebig viele)
Zahlen hintereinander addiert. Jedesmal wenn ein Übertrag kommt, passiert
einfach nix, weil es mit einem Byte Datenbreite ja keinen Übertrag ins
nächst höhere Byte geben kann.
Gruß
Karl
MfG JRD
Ihr habt mir wirklich sehr geholfen.
Grüße aus München,
Chris
"Rafael Deliano" <Rafael_...@t-online.de> schrieb im Newsbeitrag
news:3E2E5F81...@t-online.de...
>Bei Intel-Hex wird noch das 2er-Komplement gebildet ( d.h.
>Vorzeichen auf Negativ gebracht ). Damit hats der Empfänger
>besonders einfach: er addiert Datenblock plus Prüfsumme und das
>Resultat ist Null, wenn alles ok ist.
Was aber auch sehr gefährlich sein kann, wenn nämlich auf
der -fehlerhaften- Strecke nur noch Nullen übertragen wurden...
Ähnlichen "Nebeneffekt" gibt's bei ungeschickter Wahl
von odd oder even parity...
Rainer Zocholl schrieb:
Intel-Hex ist ein ASCII-Format mit Header und Endekennung.
Keine Gefahr also.
Bei reinen Datenströmen ohne Protokoll hast Du gewiss recht,
nur verwendet man dort möglichst Sicherungsmechanismen, die
diesen Fall ausschliessen.
Gruss Udo
z.b eine prüfsumme, die per modulo zu bilden ist ... ;-)
bax
> Gruss Udo