1000 er aufteilen & in Array packen

OP #4047514
Lesenswert?

Hallo,


ich möchte gerne auf einer LED Matrix Werte Variable Werte darstellen 
(300 - 2000).

Zehner und Einer kann ich schon darstellen.

Wie bekomme ich es am klügsten hin, Dezimal Zahlen in ASCII umzuwandeln?
Die Zahlen sollten dann in einem String verpackt werden.

Hier ein Beispiel, wie ich es im moment erledige...
1
  dec_hex_temp[0] = (temp / 10 ) << 4;  // Zehner
2
  dec_hex_temp[1] = (temp % 10 );    // Einer
3
  hex_tmp = dec_hex_temp[0] | dec_hex_temp[1];
4
    
5
  /* BCD to ASCII */
6
  temperature[0]    = 'T';
7
  temperature[1]    = 'e';
8
  temperature[2]    = 'm';
9
  temperature[3]    = 'p';
10
  temperature[4]    = 'e';
11
  temperature[5]    = 'r';
12
  temperature[6]    = 'a';
13
  temperature[7]    = 't';
14
  temperature[8]    = 'u';
15
  temperature[9]    = 'r';
16
  temperature[10]    = ':';
17
  temperature[11]    = ' ';
18
  temperature[12]    = (hex_tmp >> 4  ) + 0x30;
19
  temperature[13]    = (hex_tmp & 0x0F) + 0x30;
20
  temperature[14]    = ' ';
21
  temperature[15]    = '°';
22
  temperature[16]    = 'C';
23
  temperature[17]    = '\0';
#4047522
Lesenswert?

@ Jan H. (janiiix3)

>Wie bekomme ich es am klügsten hin, Dezimal Zahlen in ASCII umzuwandeln?
>Die Zahlen sollten dann in einem String verpackt werden.

Mit der Funktion itoa();


>Hier ein Beispiel, wie ich es im moment erledige...

Grausig. Lies mal ein C-Buch!
Gast #4047533
Lesenswert?

Falk Brunner schrieb:
> @ Jan H. (janiiix3)
>
> Wie bekomme ich es am klügsten hin, Dezimal Zahlen in ASCII umzuwandeln?
> Die Zahlen sollten dann in einem String verpackt werden.
>
> Mit der Funktion itoa();
>
> Hier ein Beispiel, wie ich es im moment erledige...
>
> Grausig. Lies mal ein C-Buch!

Was ist denn "Gruselig"?
#4047712
Lesenswert?

@Sebastian V. O. (sebi_s)

>Dann kann man sich die Geschichte mit temp/10 und temp%10 aber auch
>sparen und direkt

Nö.

>sprintf(temparature, "Temperature: %d °C", temp);

>schreiben. Ist natürlich etwas langsamer weil allgemeiner.

Dann hat man aber keinen Dezimalpunkt. Wenn man den braucht, geht es so 
nicht.
#4047837
Lesenswert?

Peter Dannegger schrieb:
> Eine Zahlenausgabe ist natürlich schneller als 2 Zahlenausgaben + 2
> Divisionen.

Ich meinte die Variante mit sprintf ist langsamer als eine spezielle 
Variante, die nur für zweistellige Zahlen funktioniert und ohne sprintf 
auskommt.

Falk Brunner schrieb:
> Dann hat man aber keinen Dezimalpunkt. Wenn man den braucht, geht es so
> nicht.

Von Dezimalpunkt war nie die Rede.

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