Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Genie's und Mathematiker sind gefragt. HEX rechnen->Check

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Frank Haas



Anmeldungsdatum: 10.09.2004
Beiträge: 10
Wohnort: Hamburg

BeitragVerfasst am: 06.10.2005, 10:11    Titel: Genie's und Mathematiker sind gefragt. HEX rechnen->Check Antworten mit Zitat

Moin,

folgende Hexzahlen:

&H_02 | &H_02 | &H_10 | &H_01

ergeben die Checksumme &H_EF

Durch einfaches addieren kommt der Wert "EF" nicht zu stande..
Der englische Originaltext sagt folgendes:
the 2's complement of the least significant byte of the sum of all command and data bytes from the first command byte to immediately before the checksum

Die technische Übersetzung:
Die Checksumme berechnet sich aus dem zweiten Komplement des ersten Bytes der Summe über alle Data- und Command-Bytes

Die 4 Hexzahlen gehören zu den Data- und CMD-Bytes.
Was ist "das erste Byte" ? (&H_02 ? )
Was war noch das "Komplement" ?

Wer kann weiterhelfen ?
THX
Frank
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OdinX



Anmeldungsdatum: 29.07.2005
Beiträge: 253
Wohnort: SG Schweiz

BeitragVerfasst am: 06.10.2005, 13:52    Titel: Antworten mit Zitat

vieleicht hilft das weiter:
http://de.wikipedia.org/wiki/Checksumme
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 06.10.2005, 14:40    Titel: Antworten mit Zitat

Hallo

Das Zweierkomplement des niederwertigsten Bytes wäre wohl etwas genauer übersetzt. Das niederwertigste Byte erhälst du, wenn du die Summe aller vorhergehenden Bytes über AND mit 255 verknüpfst. Das Zweierkomplement dazu bekommst du, wenn du dieses Byte nocheinmal über XOR mit 255 vernüpfst und 1 dazuaddierst. Also so ungefähr:

Code:
...
lsb% = summe& AND 255
cks% = (lsb% XOR 255) + 1
cks% = cks% AND 255
...


Gruss
Skilltronic

EDIT: Das Zweierkomplement von Null ergibt durch den Überlauf des Bytes nicht 256 sondern wieder null. Diesen Überlauf von 255 zu 0 gibt es bei den 16-Bit Integervariablen nicht. Durch eine zweite AND-Verknüpfung der Variablen cks% mit 255 wird das ausgeglichen.
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Frank Haas



Anmeldungsdatum: 10.09.2004
Beiträge: 10
Wohnort: Hamburg

BeitragVerfasst am: 06.10.2005, 19:03    Titel: Antworten mit Zitat

Ich Danke Euch beiden für die Infos..
scheint so als wäre ich nah dran.. aber eben nur nah...

wird jetzt schon n bischn peinlich aber @Skilltronic (jeder andere gerne auch) magst Du das mal testen ob Du "EF" als Ergebnis herausbekommst ?
Bei mir kommt "EB" als Ergebnis raus.. das ist falsch !
Kann aber auch am Quellcode liegen..
der sieht in etwa so aus:

Code:
summe=&h2 + &h2 + &h10 + &h1
lsb = (summe AND 255) 'hier scheint sich schon mal gar nichts zu verändern
cks = (lsb XOR 255) + 1
cks = (cks AND 255)
print hex$(cks)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 06.10.2005, 19:10    Titel: Antworten mit Zitat

Hallo

Solange der Wert von summe unter 256 bleibt, ändert eine UND-Verknüpfung mit 255 natürlich nichts. Und ich habe in meinem Beispiel nicht umsonst Ganzahlvariable (% und &) anstelle von Fliesskommazahlen benutzt.

Gruss
Skilltronic

EDIT: Die vier HEX-Zahlen zusammen ergeben 21. Das ist in binärer Schreibweise 00010101. Das Zweierkomplement dazu ist 11101011. Das enstspricht 235 bzw &hEB. Also eigentlich alles in Ordnung. Bezieht das Originalprogramm vielleicht ein weiteres Byte ein?
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Frank Haas



Anmeldungsdatum: 10.09.2004
Beiträge: 10
Wohnort: Hamburg

BeitragVerfasst am: 07.10.2005, 09:08    Titel: YES!! Antworten mit Zitat

Ich hab's !!
hier dann auch die Lösung:

Habe dem Hersteller eine Email geschickt.. die wurde bisher noch nicht beantwortet, aber dann kam halt der Ehrgeiz...

Zitat:
Die 4 Hexzahlen gehören zu den Data- und CMD-Bytes.

Die Aussage war leider falsch, denn das erste Byte ist ein Start-Byte, das 2. Byte ein Byte-Count-Byte.. die nächsten 2 Bytes sind Data bzw. CMD-Bytes.. also &h01 und &h10 !
Wenn ich jetzt Skilltronics "Logik" anwende.. dann habe ich endlich mein "&hEF" als richtige Checksumme..
puh..
sehr sehr geil.. das hilft mir ungemein weiter..
THX nochmal
Frank
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 07.10.2005, 12:33    Titel: Antworten mit Zitat

Na also!
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz