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


von HoLdo (Gast)


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

von Jörg X. (Gast)


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

von Uhu U. (uhu)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.