Verbesserungsmöglichkeit Umwandlung Festkomma zu String

Gast #2830729
Lesenswert?
• ▲
▼
hallo,

habe zwei funktionen geschrieben zur Umwandlung einer 16bit int 
Festkommazahlen in einen String zur UART oder LCD Ausgabe

Die Funktionen sind eher nicht so schön geworden...dafür aber vermutlich 
selten;)

Hat jemand vielleicht eine Idee wie ich das evtl. anderst oder besser 
realisieren könnte?

Sämtliche Verbesserungsvorschläge werden gerne angenommen...

Gruß


1
static void debug_slave_convert_integer16_fixedpoint_to_array(int16_t fixedpoint_integer, int8_t ausgabearray[], uint8_t anzahl_nachkommastellen)
2
{
3
  uint8_t divisor=2;
4
  
5
  for (uint8_t i=0;i<(anzahl_nachkommastellen-1);i++)
6
  {
7
    divisor *=2;
8
  }
9
  
10
  //Array enthält 1 Vorkommastelle
11
  ausgabearray[0]=fixedpoint_integer/divisor;
12
  
13
  
14
  //Array enthält maximal 4 Nachkommastellen
15
  
16
  fixedpoint_integer=abs(fixedpoint_integer);
17
  
18
  for(uint8_t i=1;i<(anzahl_nachkommastellen+1);i++)
19
  {
20
    fixedpoint_integer=fixedpoint_integer%divisor;
21
    fixedpoint_integer=fixedpoint_integer*10;
22
    ausgabearray[i]=fixedpoint_integer/divisor;
23
  }
24
}
25

26

27
static void debug_slave_ausgabe_string_erzeugen(int8_t eingabearray[], uint8_t anzahl_nachkommastellen, char ausgabestring[])
28
{
29
  char tmp[4];
30
  
31
  if(eingabearray[0]<0)
32
  {
33
    ausgabestring[0]='-';
34
  }
35
  else
36
  {
37
    ausgabestring[0]='+';
38
  }
39
  
40
  ausgabestring[1]='\0';
41
  
42
  
43
  if(abs(eingabearray[0])<100)
44
  {
45
    
46
    ausgabestring[1]=' ';
47
    ausgabestring[2]='\0';
48
  }
49
  
50
  if(abs(eingabearray[0])<10)
51
  {
52
    
53
    ausgabestring[2]=' ';
54
    ausgabestring[3]='\0';
55
  }
56
  
57
  
58
  itoa(abs(eingabearray[0]),tmp, 10);
59
  strcat(ausgabestring,tmp);
60
  strcat(ausgabestring,",");
61
  
62
  for(uint8_t i=1;i<(anzahl_nachkommastellen+1);i++)
63
  {
64
    itoa(eingabearray[i],tmp,10);
65
    strcat(ausgabestring,tmp);
66
  }
67
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.