zahl in string Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
|
|
|
BID = 63032
schaegi Gerade angekommen
Beiträge: 19
|
|
Hallo, ich habe noch einmal eine Frage, und zwar, wie wandle ich eine Zahl in einen String um:
Bsp:
unsigned char zahl = 1234;
diese zahl sollte dann aber so aussehen:
char string[]={'1','2','3','4'};
Ich hoffe ihr seit mitgekommen. |
|
BID = 63041
ERDI-Soft Stammposter
Beiträge: 200 Wohnort: Offenburg
|
|
Kann dir kein Beispielprogramm in C geben aber zumindest mal den Lösungsweg aufzeigen.
Wenn du weißt, wieviel Stellen du hast, ist es relativ einfach. In deinem Fall subtrahierst du 1000 von deiner Zahl, danach machst du nen Test, ob kein Fehler pasiert ist (also die Zahl nicht mehr durch tausend teilbar ist), erhöhst dann nen Zähler und teilst wieder durch tausend. Sobald der Überlauf (Fehler) stattfindet, hast du im Zähler die Menge der tausender.
Das ganze machst du auch mit 100 und mit 10. Die letzte Zahl, die stehenbleibt, sind dann deine Einer.
Etwa so:
1234 - 1000 = 234
Test, ob Carry gesetzt (oder anderes Bit, je nach Proz.)
nicht gesetzt: Temp1000 + 1
234 - 1000 = Fehler
Test, ob Carry gesetzt (oder anderes Bit, je nach Proz.)
gesetzt, nächster Schritt:
234 - 100 = 134
Test, ob Carry gesetzt (oder anderes Bit, je nach Proz.)
nicht gesetzt, Temp100 + 1
usw. usf.
Ich weiß jetzt nicht, für was du das einsetzen willst (welcher µController, welche Sprache), aber prinzipiell geht es so. Vielleicht hat aber jemand anderer noch ne elegantere Lösung?
So mache ich auf jeden Fall meine Umwandlung von binär nach decimal, um die Uhrzeit aus nem Register auf dem Display darstellen zu können. (Spart ein paar Register.)
Gruß, ERDI - Soft.
_________________
Wie immer gilt: Erst googeln, dann fragen!
(Für ICQ bitte erst Anfrage per PM, da alles andere nicht angenommen wird.) |
|
BID = 63051
Gurney Gesprächig
Beiträge: 193 Wohnort: Stuttgart
|
Ich weiß nicht, ob das auf allen µC so funktioniert, aber wenn man in C eine Division zweier Integers durchführt und das Ergebnis als Integer auffasst, werden die Nachkommastellen einfach abgeschnitten. Also in etwa so:
Code : |
int zahl = 1024;
int tausender = zahl/1000;
zahl-=tausender*1000; // müssen natürlich abgezogen werden...
int hunderter = zahl/100;
zahl-=hunderter*100;
usw... |
|
Das ganze kann man natürlich auch noch in eine Schleife packen usw. Ob das allerdings in Assembler auch so gemacht werden kann würd ich auch gern mal wissen Außerdem dürfte es wegen der Divisionen etwas rechenintensiver sein als Erdis Lösung, aber so ginge es jedenfalls auch.
Tschau
Gurney
[ Diese Nachricht wurde geändert von: Gurney am 5 Apr 2004 16:01 ]
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag heute wurden bisher 0 Beiträge verfasst © x sparkkelsputz Besucher : 182421061 Heute : 100 Gestern : 5459 Online : 502 29.11.2024 0:38 2 Besucher in den letzten 60 Sekunden alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0468688011169
|