Hexadezimal -> Dezimal -> ASCII2
-
Hallo,
ich habe da ein Problem, es würde mich sehr freuen, wenn mir jemand weiterhelfen könnte:
Hier mein Vorhaben:
Ich habe eine 2 Byte große Zahl z.b. 0x00ff
Diese Zahl (Desimal 255) soll dann in die 3 Ziffern zerlegt werden
2-5-5
Die einzelnen Ziffern sollen dann in ASCII2-Zeichen umgewandelt werden
(zweimal 0: 0x30 0x30) 0x32 0x35 0x35Gibt es für solche Sachen Standardfunktionen?
Oder wie stelle ich das am sinnvollsten an?Gruß Tupo13
-
(s)printf

-
@ CStoll
Danke für deine Antwort.
Leider weiß ich nicht, wie das mit sprintf funktionieren soll, kannst du das bitte etwas genauer erklären?Es ist ja jede einzelne Ziffer BCD kodiert und dann noch einmal ASCII kodiert.
Beispiel:Die Dezimalzahl 1234 will ich in einem 5 byte großen Char-Array als ASCII Zeichen speichern.
als0 (0 1 2 3 4) in ASCII dann (30 31 32 33 34)Momentan mache ich es so
Ich dividiere die Zahl durch 10.000
Das Ergebnis addiere ich mit 30 um das ASCII Zeichen zu erhalten
Das ist dann der erste Wert meines ArraysDen Rest (Modulo) dividiere ich durch 1.000
Das Ergebnis addiere ich mit 30 um das ASCII Zeichen zu erhalten
Das ist dann der 2. Wert...............usw
Mich würde interressieren, ob jemand einen besseren, komfortableren Weg kennt?
Gruß Tupo13
-
Du stellst zunächst ein entsprechend großes char-Array zur Verfügung, dann kannst du es mit sprintf() füllen (der macht das automatisch, was du von Hand erledigst):
char out[outsize];//outsize entsprechend groß wählen int inp=1234; sprintf(out,"%i",inp);(alternativ kannst du auch mal in der C++ FAQ zum Thema "einmal Zahl und zurück" nach weiteren Lösungsmöglichkeiten suchen)