Hex Zahlen addieren
-
Hallo ich möchte mehrer hex Zahlen addieren und dann mit einer Prüfsumme vergleichen.Mein Problem ist, dass die Summe der addierten Werte immer grösser als meine Prüfsumme ist.Die Prüfsumme(FF) ist fest vorgegeben diese kann ich also nicht ändern.Kann ich das irgend wie den überlauf bei meinen additionen wegfallen lassen?
-
Mach doch nach jeder Addition modulo FF.
-
Und dann?Addiere ich die einzelne Werte?
-
C_Anfänger schrieb:
Kann ich das irgend wie den überlauf bei meinen additionen wegfallen lassen?
nimm für die summe einen 'unsigned char', dann werden die überläufe einfach unterschlagen.
-
Das hab ich hier ist der Teil meines Codes bekomme für meine Summe immer Werte über 2300 herraus.
cpp
typedef unsigned char Uint8;Uint16 check_recive_data = 0;
Uint8 check = 0;
Uint16 y = 0;for (check_recive_data = 0 ; check_recive_data < 1; check_recive_data++)
{
check += ((I2cMsgIn1.SlaveAddress << 1)+1);for (tocheck=(msg->NumOfBytes - 0x80)+2, y=0; tocheck; y++, tocheck--)
{
check += I2cMsgIn1.MsgBuffer[y];}
}if (check == 0xFF )
{
pass();
}
/cpp
-
C_Anfänger schrieb:
Das hab ich hier ist der Teil meines Codes bekomme für meine Summe immer Werte über 2300 herraus.
kann es sein, dass auf deinem system 'char' mehr als 8 bits hat?
dann mach so: sum = (sum + summand) & 255;
-
Besten Dank " ;fricky " es funktioniert.Echt super danke.