Entwickler-Ecke
Sonstiges (Delphi) - Wie kann ich einen HEX wert prüfen ob er odd od. even ist?
oOXTCOo - Do 28.05.09 15:28
Titel: Wie kann ich einen HEX wert prüfen ob er odd od. even ist?
hallo!
ich müsste einige hexwerte wie: $01 $E1 $00 usw... auf odd oder even prüfen weil
ich nachher alle geraden xoren und dann alle ungeraden xoren muss.
ich habe das hier geschrieben, bin mir aber nicht sicher ob es richtig ist:
Quelltext
1: 2:
| if Odd($01) then memo1.lines.add(s + ': ' + 'odd') else memo1.lines.add(s + ': ' + 'even'); |
oder muss ich den hex wert zuerst nach interger convertieren?
danke.
hari
jaenicke - Do 28.05.09 15:34
Das ist so schon richtig. Es gibt keine Hexadezimalwerte, das ist nur eine Darstellung eines Zahlenwertes. Ob die Darstellung hexadezimal oder dezimal oder binär (kennt Delphi allerdings nicht) ist, ändert ja am Wert nichts.
oOXTCOo - Do 28.05.09 16:05
danke, dann versuche ichs nochmals...
denn es kommt immer eine flasche checksumme raus...
naja mal sehen... danke nochmals...
---
Moderiert von
Narses: Beiträge zusammengefasst---
das stimmt was nicht...
ich habe diesen text gefunden:
| Zitat: |
| calculate checksums and add them to the frame there are two checksums for FBUS. The first is an exclusive or (XOR) of the characters in every odd position in the frame and the second is an exclusive or (XOR) of the characters in every even position in the frame (eg if a frame was 1E 0C 00 7F 00 02 02 03, the odd checksum value would be: 1E XOR 00 XOR 00 XOR 02 which results in a value of 1C and the even checksum byte would be: 0C XOR 7F XOR 02 XOR 03 which results in a value of 72 note all values shown above are in hex |
das ist genau das was ich brauche...
laut diesem text sollte zb. 1E ODD sein... aber mit meinem code zeigt er mir EVEN an...
Moderiert von
Narses: Quote-Tags hinzugefügt.
jaenicke - Do 28.05.09 16:47
Äh, Moment...
Das gerade oder ungerade bezieht sich auf die Position an der Stelle... (odd position, even position)
Die Positionen 1, 3, 5 ... sind ungerade, die anderen gerade. Das hat mit den Werten rein gar nichts zu tun.
// EDIT:
Du musst also das gar nicht prüfen, sondern kannst eine normale for-Schleife nehmen und zwei Werte mitführen.
oOXTCOo - Do 28.05.09 16:53
jaenicke hat folgendes geschrieben : |
Äh, Moment...
Das gerade oder ungerade bezieht sich auf die Position an der Stelle... (odd position, even position)
Die Positionen 1, 3, 5 ... sind ungerade, die anderen gerade. Das hat mit den Werten rein gar nichts zu tun.
// EDIT:
Du musst also das gar nicht prüfen, sondern kannst eine normale for-Schleife nehmen und zwei Werte mitführen. |
achsoo, also für odd nehme ich angefangen von der ersten position immer jeden zweiten wert
und für die even checksumme nehme ich jeden zweiten wert gezählt von der zweiten stelle?
jaenicke - Do 28.05.09 16:55
Richtig. Also eine einfache Schleife, die bei jedem Durchlauf zwei Werte berechnet. Dann hast du danach direkt beide Prüfsummen.
oOXTCOo - Do 28.05.09 16:57
jaenicke hat folgendes geschrieben : |
| Richtig. Also eine einfache Schleife, die bei jedem Durchlauf zwei Werte berechnet. Dann hast du danach direkt beide Prüfsummen. |
danke stimmt!
hier ist das ergebnis:
1E 00 0C 7F 00 02 D2 01 CHECKSUM: C0 7C
ODD CHECKSUM = C0
EVEN CHECKSUM = 7C
danke dir! (warum denn einfach wenns auch schwer geht?) ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!