# Byte array in float und integer umwandeln



## Rosi (18. April 2007)

Hallo zusammen,
ich habe ein problem beim Umwandeln von Byte Werten.

Was ich machen will:
Ich bekomme ueber die Serielle Schnittstelle Daten gesendet, die einen Temperaturmesswert darstellen sollen. Diese Daten werden eingelesen und der Temperaturwert soll gespeichert werden.

Mein Problem:
Ich habe den Protokollframe auseinandergenommen und als Daten bleiben mir dann zwei  Felder (mit zwei Feldelementen) vom Datentyp Byte uebrig. Diese sollen nun aber als Float und als Integer gespeichert werden.
Wie kann ich die Byte Felder umwandeln?

Programmierumgebung ist Microsoft Embedded Visual C++ und das Betriebssystem ist Windows CE.

Danke schonmal im vorraus fuer eure Hilfe.


----------



## Matthias Reitinger (18. April 2007)

Hallo,

wie sind denn diese Byte-Felder definiert? Einen Datentyp byte gibt es bei ISO-C++ nicht. Sind das Felder von chars oder unsigned chars?

Sehe ich das davon mal gesehen richtig, dass die Daten insgesamt vier Bytes belegen? Sollen dann die ersten zwei Bytes in einen float-Wert und die anderen zwei Bytes in einen int-Wert umgewandelt werden?

Grüße,
Matthias


----------



## Rosi (19. April 2007)

Hallo
Die Felder sind vom Datentyp "Byte".
Die vier Feldelemente zusammen ergeben den Temperaturwert.
Es sind nur zwei verschiedene Felder, weil sie nacheinander über den Ethernetport ausgelesen werden.
Es soll letzendlich einmal der gesammte Wert, also alle vier Feldelemente, in float und dann noch in Integer umgewandelt werden, da ich sie zu verschiedenen Bewechnungen brauche.

Grüße


----------



## MCoder (19. April 2007)

Hallo Rosi, 
du kannst die 4 Bytes in ein Array packen und dieses dann auf eine float-Variable kopieren. Vorausgesetzt die Bytes sind richtig sortiert, bekommst du dann deinen Temperaturwert. Die Wandlung in einen Integer erreichst du mit einem einfachen Type-Casting. Allerding gehen dann die Nachkommastellen verloren.

```
unsigned char pBuffer[] = { 0xB6, 0xF3, 0x9D, 0x3F }; // Wert: 1.234

float fValue;
memcpy(&fValue, pBuffer, sizeof(float)); // Kopieren des Arrays auf eine float-Variable

int nValue = static_cast<int>(fValue); // als int
```
Gruß
MCoder


----------



## Rosi (19. April 2007)

Hallo,
genau das war es nachdem ich gesucht habe. Funktioniert jetzt.

Vielen Dank fuer eure Hilfe

Gruesse


----------

