unsigned long in string konvertieren

Gast #747231
Lesenswert?
• ▲
▼
Hi,
mal wieder ich,....

Betr.:ATmega128, gcc

Hintergrund:
Ich habe in meinem Programm eine Zeit laufen.
Die deklaration ist folgende
1
//Globale Variable
2
unsigned long time_in_ms;
über den Timer 0 lasse ich diese hochlaufen...

Nun zu meiner Frage:

um diese Zeit über den uart (als ASCII) und an das LCD versenden zu 
können muss ich diese in einen String konvertieren.

Ich mache das so:
1
  if( STO_Time.time_ms <= 32767)
2
  {
3
    sprintf(&LCDZ1[0], "%d", (int)STO_Time.time_ms);
4
    sprintf(&uart[0], "%d", (int)STO_Time.time_ms);
5
  }
6
  else
7
  {
8
    sprintf(&LCDZ1[0], "%ld", STO_Time.time_ms);
9
    sprintf(&uart[0], "%ld", STO_Time.time_ms);
10
  }

mein Problem,
ich möchte meine variable als unsigned long (2^32-1) konvertieren.
Im moment konvertiere ich sie jedoch als signed long.
Dadurch verkürzt sich meine Zeit (ca. 49Tage) um die hälfte.

Gibt es eine Möglichkeit, wirklich eine unsigned long zu konvertieren??



Gruß
joe
#747273
Lesenswert?
• ▲
▼
µC-nob wrote:

>
1
> //Globale Variable
2
> unsigned long time_in_ms;
3
> 
4
>   if( STO_Time.time_ms <= 32767)
5
>   {
6
>     sprintf(&LCDZ1[0], "%d", (int)STO_Time.time_ms);
7
>     sprintf(&uart[0], "%d", (int)STO_Time.time_ms);
8
>   }
9
>   else
10
>   {
11
>     sprintf(&LCDZ1[0], "%ld", STO_Time.time_ms);
12
>     sprintf(&uart[0], "%ld", STO_Time.time_ms);
13
>   }
14
>

Ersetze den ganzen Abschnitt durch:

     sprintf(&LCDZ1[0], "%lu", STO_Time.time_ms);
     sprintf(&uart[0], "%lu", STO_Time.time_ms);

wenns denn unbedingt sprintf sein muss.

PS.

     sprintf( LCDZ1, "%lu", STO_Time.time_ms);
     strcpy( uart, LCDZ1 );

dürfte schneller ablaufen.

Hier findest du eine Übersicht über alle Format Spezifizierer.
http://www.cplusplus.com/reference/clibrary/cstdio/printf.html

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren