www.mikrocontroller.net

Forum: Compiler & IDEs Umwandlung Vorkomma-Int und Nachkomma-Int zu Float


Autor: HoLdo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich benutze den IAR C-Compiler auf MSP430F149 und versuche gerade 3 
Bytes, die Vorkomma- und Nachkommateil einer Float-Variablen 
repräsentieren wieder zurück in eine float zu konvertieren.

Die Umwandlung der 3 Bytes in Vor- und Nachkommateil als int habe ich 
bereits umgesetzt. Die Floatvariable f_help wird auch schon mit dem 
Vorkommateil der Bytes belegt.

Nun zu meinem Problem, ich muss bestimmen wieviele Stellen der 
Nachkommateil hat. Gibt es eine Standardfunktion, die dies umsetzt?

float hb2float(char byte2, char byte1, char byte0)
{
  // INPUT 16bit value, 8bit digit
  // OUTPUT Float Value of Halfbrigde result
  
  union
      {
          int i32;
          char i_byte[4];
       }help;
  
  unsigned int vk, nk;
  float f_help;
  
  help.i_byte[0]=byte1;
  help.i_byte[1]=byte2;
  help.i_byte[2]=0x00;
  help.i_byte[3]=0x00;
  vk=help.i32;
  
  help.i_byte[0]=byte0;
  help.i_byte[1]=0x00;
  help.i_byte[2]=0x00;
  help.i_byte[3]=0x00;
  nk=help.i32;
   
  f_help=(float)vk;
  return f_help;    // vorläufiger Rückgabewert -> nur Vorkomma
};


Für Anregungen zur Lösung wäre ich dankbar.

Gruß
HoLdo

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab zwar nich ganz verstanden, was du willst, aber wenn die Daten 
wirklich nur als "'byte2''byte1'',''byte0'" zu lesen sind, dann sollte 
es (einfach) so gehen:
float int2fl(uint8_t high, uint8_t low, uint8_t dec)
{
    return (high * 256) + low + (dec/256.0);
}
Wenn's ganz anders gehen soll, musst du es genauer erklären ;)

hth. Jörg

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir scheint, daß schon 'Die Umwandlung der 3 Bytes in Vor- und 
Nachkommateil' das Problem ist.

Beschreibe doch einfach mal, wozu du das brauchst - ich bin mir ziemlich 
sicher, daß es dafür eine einfachere Lösung gibt.

Zahlenkonvertierung ist häufig etwas verwirrend und wenn man sie noch 
nicht beherrscht, baut man gerne fürchterlich Klimmzüge ein, die nichts 
anschaulicher machen, einen Haufen Aufwand benötigen und nichts bringen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.