Umwandlung Vorkomma-Int und Nachkomma-Int zu Float

Gast #639661
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?
1
float hb2float(char byte2, char byte1, char byte0)
2
{
3
  // INPUT 16bit value, 8bit digit
4
  // OUTPUT Float Value of Halfbrigde result
5
  
6
  union
7
      {
8
          int i32;
9
          char i_byte[4];
10
       }help;
11
  
12
  unsigned int vk, nk;
13
  float f_help;
14
  
15
  help.i_byte[0]=byte1;
16
  help.i_byte[1]=byte2;
17
  help.i_byte[2]=0x00;
18
  help.i_byte[3]=0x00;
19
  vk=help.i32;
20
  
21
  help.i_byte[0]=byte0;
22
  help.i_byte[1]=0x00;
23
  help.i_byte[2]=0x00;
24
  help.i_byte[3]=0x00;
25
  nk=help.i32;
26
   
27
  f_help=(float)vk;
28
  return f_help;    // vorläufiger Rückgabewert -> nur Vorkomma
29
};

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

Gruß
HoLdo
Gast #639763
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:
1
float int2fl(uint8_t high, uint8_t low, uint8_t dec)
2
{
3
    return (high * 256) + low + (dec/256.0);
4
}
Wenn's ganz anders gehen soll, musst du es genauer erklären ;)

hth. Jörg
#640106
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

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.