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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.