Problem bei while schleife

s4pph1r3

Lieutenant
Registriert
Sep. 2006
Beiträge
850
hallo

ich bekomme über eine Rs232 schnittstelle

die werte "1" und "4" als

also 0x01 und 0x04

ich möchte jetzt eine schleife so oft durchlaufen lassen anhand dieser werte also:

paar beispiele:

ich bekomme eine "2" und "4" -> while schleife 24mal ausführen


ich bekomme eine "3" und "1" -> while schleife 31mal ausführen

nur wie mach ich das?
 
erstmal vielen dank

hab vergessen ich programmier in C

ok werd mich ma schlau machen wie das geht
Ergänzung ()

nur was bringt das wenn ich das in ein Zeichen umwandle?

am ende soll ja 0x0E rauskommen
 
Wenn du 2 und 4 über die Schnittstelle bekommst und dann 24 mal die Schleife durchlaufen willst, dann musst du doch einfach 2*10^1 + 4*10^0 rechnen. Wenn du das dann in dual oder hex brauchst musst das halt noch umrechnen
 
Oder wenn man die Umrechnung ins Dezimalsystem nicht macht:

a * 0x0a + b

Bei a = 0x01
und b = 0x04
ist das Ergebnis 0x0e

Bei a = 0x03
und b = 0x01
ist das Ergebnis 0x1f (oder 31)
 
@Pawel

verstehe ich deine rechnung richtig?

1 * 0x01 + 0x04 = 0x0E?

Bei a = 0x01
und b = 0x04
 
Um aus einzelnen Dezimalen bzw. Hexadezimalen Ziffern die zusammengesetzte Zahl zu machen geht man nach einem einfachen Prinzip vor, das InfoStud84 schon richtig angewandt hat.
Man nimmt die Ziffer, multipliziert sie mit der Anzahl von Ziffern im verwendeten Zahlensystem hoch den Stellenwert der Ziffer. Wobei man die einzelnen Ergebnisse addiert.

Beispiel Dezimalzahl 24:
2*10^1 + 4*10^0 = 24

Beispiel Hexadezimalzahl 3F:
3*16^1 + F*16^0 = 3F ( wobei F = 15 gilt, wenn man es mit einem normalen Taschenrechner rechnet )

Gruß
BlackMark
 
s4pph1r3 schrieb:
@Pawel

verstehe ich deine rechnung richtig?

1 * 0x01 + 0x04 = 0x0E?

Bei a = 0x01
und b = 0x04

Nein.

Das 0x0a darfst Du nicht ersetzen, das steht für 10 dezimal.

Also:
a * 0x0a + b = 0x01 * 0x0a + 0x04 = 0x0E
 
Zurück
Oben