mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Checksumme berechnen in VB und in C


Autor: Jonnyk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jörg B. (manos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.