unsigned int to char[]

Status
Niet open voor verdere reacties.

HelpElec

Gebruiker
Lid geworden
6 mrt 2013
Berichten
102
Beste allemaal,

Ik probeer een unsigned integer(16) te 'vertalen' naar een ASCII string, zodat ik deze via RS232 kan versturen.
Bijvoorbeeld, ik heb een integer met de waarde 321 en dit moet een char array worden met '3', '2' en '1'.
Ik heb hiervoor de volgende code:

Code:
char *U16_to_ASCII(U16 Dec)
{
    char *Rtrn;
    U8 Temp, Idx;
    Idx=0;
    U16 Divider = 10000;
    while(Divider > 0)
    {
        Temp = (U8)Dec/Divider;
        if(Temp)
        {
            Rtrn[Idx++] = Temp + 48;
            Dec -= (U16)Temp * Divider;
        }

        Divider /= 10;
    }
    return Rtrn;
}

Door te delen van 10000 tot en met 1 zoek ik de chars. Vanwege het ASCII tabel tel ik 48 erbij op om het juiste char te krijgen en haal de char van de orginele waarde af.
Hieronder de functie call.

Code:
char *ASCII_Rslt;
U16 Test = 321;

ASCII_Rslt = U16_to_ASCII(Test);

Ik ben vrij nieuw met C en ben er niet zo zeker van of het gebruik van pointers hier juist is... Of er wellicht een simpelere manier is om dit te doen...
Het resultaat van de functie is altijd iets als 'é'. In ieder geval altijd 1 char.

Weet iemand hoe dit moet?

Bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan