Eine Prüfsumme Kontrollieren ? aber wie ??
-
Hallo c++ gemeinde ich habe einen satz deren Prufsumme ich überprüfen will nur leider hab ich keine idee wie kann mir einer weiterhelfen der satz sieht so aus und
wird nachher gesplittet das nur noch 0000*05 übrigbleibt 05 ist die Prüfsumme das *chen wird als trennung vom satz genommen
wer kann mir denn weiterhelfen ?
-
Vielleicht solltest du mal rausfinden wie der Algorithmus deiner Prüfsumme ist? Der Rest ergbit sich nämlich dann daraus von selbst...
-
Ja hab ich schon peil ich aber nicht so ganz

Die Daten werden im ASCII-Format (American Standard Code for Information Interchange, Amerikanischer Standard Code für Informationsaustausch) übertragen. Dabei sind alle druckbaren Zeichen sowie Carriage-Return (CR, Waagenrücklauf) und Line-Feed (LF, Neue Zeile) erlaubt und die Daten werden in der Form von Sätzen übertragen. Jeder dieser Sätze beginnt mir dem Zeichen "", einer zwei Zeichen langen Senderkennung, einer drei Zeichen langen Satzkennung und dann folgt eine Reihe von Datensätzen, die mit Kommas unterteilt werden. Schliesslich wird der Satz mit einer optionalen Prüfsumme und einer CR/LF abgeschlossen. Jeder Satz kann inklusive des führenden "" und den beiden CR/LF bis zu 82 Zeichen enthalten. Ist ein Datenfeld in einem Satz zwar vorgesehen aber nicht verfügbar, so wird er einfach weggelassen, das dazugehörige Komma zur Trennung der Datensätze wird aber ohne Leerzeichen beibehalten. Durch Zählen der Kommas kann ein Empfänger dann aus jeden Satz die entsprechenden Informationen richtig zuordnen.
Die meist optionale Prüfsumme besteht aus einem "*" und zwei Hexadezimalzahlen, die sich durch ein (bitweise) exklusiv-oder (1+1=0, 1+0=1, 0+0=0) aller Zeichen zwischen dem "" und dem "*" berechnen. Bei manchen Sätzen ist die Prüfsumme notwendig. Der Standard erlaubt weiterhin einzelnen Herstellern eigene (proprietäre) Satzformate. Diese fangen mit "P" an, gefolgt von der drei Buchstaben langen Herstellerkennung. Anschliessend folgen die Daten.
-
Erstmal kannst du mit strtol() den Zahlenwert der Prüfsumme herausfinden, danach mit einer for()-Schleife alle Zeichen XOR-verknüpfen (der Operator in C heißt ^) und schließlich die beiden Werte vergleichen.
-
So ganz nebenbei...wie wärs mit Satzzeichen??! Kennst du die? Die machen den Post leslicher...
