PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Brauche Hilfe beim Umrechnen



a4b68e
16.10.2011, 11:01
Hallo, Leute!

Es geht um folgende Tabelle: http://martinsuniverse.de/projekte/audiohplayer/fiszeichen.html

Für mich sind die Zahlen interessant, also &H30, &H31, &H32, &H33, &H34, &H35, &H36, &H37, &H38, &H39. Das sind dann 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

Angenommen, ich habe eine Variable A
Wenn A = 3 ist, soll es auf &H33 umgerechnet werden.
Wenn A aber 30 ist, ist das dann &H33 und &H30.

Zur Zeit arbeite ich mit if-then schleifen, was sehr aufwändig ist und viel Flash kostet.
Beispiel:
If A = 13 then
Zeichen1 = &H31
Zeichen2 = &H33
end if

If A = 14 then
Zeichen1 = &H31
Zeichen2 = &H34
end if

usw.

Wie Ihr seht, wird die Umrechnung sehr lang.

Wie kann ich das Problem anders lösen?

Beispiel, wie ich es mir vorstelle:

Dim A as Byte
Dim y as byte
Dim x as Byte

Do
A = 46

gosub umrechnen
print y, x

Loop

umrechen:
xxx
xxx
xxx
...
y = &H34
x = &H36
return



Hoffe, es kann mir Jemand helfen.

Danke und Gruss

radbruch
16.10.2011, 11:31
So etwa:


Dim Zehner As Byte , Einer As Byte , A As Byte

Zehner = "0"
Einer = "0"
A = 46

While A >= 10
A = A - 10
Zehner = Zehner + 1
Wend

While A > 0
A = A - 1
Einer = Einer + 1
Wend

If Zehner = "0" Then Zehner = " " ' Führende 0 mit Leerzeichen ersetzen
Print Zehner ; Einer

BMS
16.10.2011, 11:36
Hallo,
zu jeder Ziffern musst du dann nur noch &H30 addieren, dann müsste es passen.
Grüße,
Bernhard

a4b68e
16.10.2011, 12:08
Danke.
Werde ich später ausprobieren, muss jetzt Reifen wechseln.

Falls es noch Vorschläge gibt, her damit.

Gruss

Michael
16.10.2011, 14:44
Ascii-Ausgabe in Bascom:

Print Asc(variable)

Gruß, Michael

Sauerbruch
16.10.2011, 16:16
Ascii-Ausgabe in Bascom:
Print Asc(variable)


Man muss allerdings beachten, dass (variable) erstens ein String sein muss, und zweitens nur das erste Zeichen des Strings umgewandelt wird. So schreibt´s zumindets die Bascom-Hilfe:

Assigns a numeric variable with the ASCII value of the first character of a string.

Aber wie man eine mehrstellige Zahl in Ziffern zerlegt hat radbruch ja schon vorgeschlagen, und die Umwandlung in Strings sollte ja auch kein größeres Problem sein.

Werde jetzt übrigens auch mal Reifen wechseln :-)

peterfido
16.10.2011, 21:47
Dafür ist der LookUp Befehl recht gut geeignet. Ungetestet aus dem Kopf:



Umrechnen:
If A > 10 Then
Z1 = A Mod 10
Z2 = A - z1
Z2 = Z2 / 10
Zeichen1 = Lookup(z1 , Werte)
Zeichen2 = Lookup(z2 , Werte)
Else
Zeichen1 = Lookup(a , Werte)
Zeichen2 = 0
End If
Return

Werte:
Data &H30 , &H31 , &H32 , &H33 , &H34 , &H35 , &H36 , &H37 , &H38 , &H39


Okok - war wohl doch ein zu langer Tag:



Umrechnen:
If A > 10 Then
Z1 = A Mod 10
Z2 = A - z1
Z2 = Z2 / 10
Zeichen1 = Z1 + &H30
Zeichen2 = Z2 + &H30

Else
Zeichen1 = A + &H30
Zeichen2 = 0
End If
Return