Forum: Mikrocontroller und Digitale Elektronik checksumme


von Thomas (Gast)


Lesenswert?

kann mir eine mal den folgenden algorythmus beschreiben, ich kapiers so
einfach nicht:

is the checksum field that represents the checksum of the record. The
checksum is calculated by summing the values of all hexadecimal digit
pairs in the record modulo 256 and taking the two's complement.

(Das ist der Algorythmus zum berechnen einer intel hex file check
summe.)
MfG

von Tobi (Gast)


Lesenswert?

dateiinhalt:
11 22 33 54 55 usw...

(11+22+33+54+55 ....) modulo 256, damit nichts grösser als ein byte
rauskommt

das ergenis dann invertieren und +1

res = ~res + 1

von Thomas (Gast)


Lesenswert?

Ich bekomms nicht hin.

46 4C 55 49 44 20 50 52 4F 46 49 4C 45 00 46 4C = 1079d % 256d = 55d

55d = 110111b , invert -> 001000b = 8d

als ergebniss müsste eigentlich 33 rauskommen (so stehts in der
original datei)

MfG

von Tobi (Gast)


Lesenswert?

ich komm auf 201d,
du hast nur von den 6bit das komplement genommen, musst aber mit allen
8 bit arbeiten, und dann noch plus 1. stimmen tuts trotzdem nicht

von Thomas (Gast)


Lesenswert?

Ich hab ein paar ziffern vergessen.
jetzt stimmts, danke.

10 24 62 00 46 4C 55 49 44 20 50 52 4F 46 49 4C 45 00 46 4C = 4CDh =
1229d % 256d = 205d = 11001101b invert-> 00110010b = 50d + 1d = 51d =
32h + 1h = 33 h

von schamp (Gast)


Lesenswert?

Modulo 256 versteh ich hier (damit nicht größer als 1 Byte), aber wieso
muss dann noch das 2er Komplement gebildet werden ??

von Werner B. (Gast)


Lesenswert?

Checksum = (NULL minus ((Summe aller Werte) % 256)) % 256;

Oder: (Checksum + (Summe aller Werte)) % 256 == 0;

Wobei man sich das ganze Modulogegurke spart wenn wenn man alles in
einem unsigned 8-bit aufsummiert, bzw. am ende  mit 0xFF maskiert.

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
Noch kein Account? Hier anmelden.