float-wert aus unsigned char* auslesen
-
Hi,
ich habe Daten in einem 4 Byte langen Byte-Array:
unsigned char* buffer = (unsigned char*)malloc(4);
getFloatData(&buffer);Wie bekomme ich den Float-Wert da raus?
Einfach auf float casten "(float)buffer" geht laut Compiler nicht.
Mit einem 2 oder 4 Byte Integer gehts komischerweise:
unsigned char* buffer = (unsigned char*)malloc(2);
getShortIntData(&buffer);
short int x = (short int)buffer;bzw.
unsigned char* buffer = (unsigned char*)malloc(4);
getIntData(&buffer);
int x = (int)buffer;Gruß, Thomas
-
edit:
ein char* ist ein Zeiger, ein Cast auf einen Zeiger liefert *nicht* das gewünschte Ergebnis, int x = (int) "3" liefert den Integer Wert der Stelle im Speicher, wo {'3', '\0'} sich befinden!
-
Hi supertux,
danke für den Tipp!
Hab mir jetzt noch eine andere Lösung ausgedacht um den typlosen Puffer umgehen zu können. Damit funktionierts einwandfrei.
Gruß, Thomas
-
ein char* ist ein Zeiger, ein Cast auf einen Zeiger liefert *nicht* das gewünschte Ergebnis, int x = (int) "3" liefert den Integer Wert der Stelle im Speicher, wo {'3', '\0'} sich befinden!
wenn jemand von (unsigned) char* redet, geht es nicht zwingend auch um strings
unsigned char* buffer = (unsigned char*)malloc(4);
...beinhaltet wohl ein float - also einfach den zeiger casten und auswerten:
float *fp= (float*)buffer; float f= *fp;
-
hellihjb schrieb:
ein char* ist ein Zeiger, ein Cast auf einen Zeiger liefert *nicht* das gewünschte Ergebnis, int x = (int) "3" liefert den Integer Wert der Stelle im Speicher, wo {'3', '\0'} sich befinden!
wenn jemand von (unsigned) char* redet, geht es nicht zwingend auch um strings
das ist wahr, aber die Art und Weise, wie er gecastet hat war falsch.