Hallo Leute Ich hofe ihr könnt mir helfen. Folgendes Problem: Habe in VB ein programm da wird die Checksumme berechnet, mit dieser zeile CKS = CKS + (bytbuffer(i) And &HFF) wenn ich das jetzt nach c umschreiben möchte mache ich folgendes cks = cks+(data & 0xFF); aber es funktioniert nicht, ich bekomme 2 verschiedene checksummen bei den gleichen daten. Kann mir wer sagen wo der Fehler liegt oder einen tip geben wie man das anders machen könnte?
Einzelne Zeilen zu posten finde ich für die Beschreibung eines Algorithmus absolut ungenügend. Ich vermute, da ist noch eine Schleife drum und die Datentypen und die Initialisierung der Daten sind ebenfalls wichtig. Bitte nachreichen. Ein AND mit 0xFF finde ich irgendwie sinnfrei, wenn es sich um 8-Bit-Werte handeln sollte. Sicher, dass du nicht CKS = (CKS + bytbuffer(i)) And &HFF bzw. cks = (cks + data) & 0xFF; haben willst? Gruß Kai
Das "And &HFF" interpretier ich so, dass von einer Zahl nur die unteren 8 Bit genommen werden sollen was bei "bytbuffer(i)" eigentlich eher unsinnig klingt da es wahrscheinlich sowieso nur 8 Bit Werte sind. Vielleicht mal die Definition von cks und data prüfen...
Jonnyk wrote: > CKS = CKS + (bytbuffer(i) And &HFF) > > wenn ich das jetzt nach c umschreiben möchte mache ich folgendes > > cks = cks+(data & 0xFF); > > > aber es funktioniert nicht, ich bekomme 2 verschiedene checksummen bei > den gleichen daten. Kannst du vieleicht ausmachen, welcher Code das richtige Ergebnis liefert? Wie sind die Datentypen in beiden Codes definiert? Wenn "cks" und "data" als uint8_t definiert sind, so wie es vermutlich sein sollte, ist die &-Operation unnötig. > Kann mir wer sagen wo der Fehler liegt oder einen tip geben wie man das > anders machen könnte? Ich vermute, du handtierst auf irgendeiner Seite mit falschen (vorzeichen-behafteten) Datentypen. Basic ist für solcherlei Probleme berühmt-berüchtigt.
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.