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 0x35

    Gibt 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 Arrays

    Den 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)


Anmelden zum Antworten