Float-Wert in einzelne Bytes aufteilen ?



  • Hallo,

    ich habe folgendes Problem:
    Ein float-Wert muesste in 4 einzelne Bytes aufgeteilt werden, d.h. in ein char-Array gespeichert werden.

    Folgendes funktioniert ja nicht wirklich:

    int i;
    char Bytes[5];
    float Value = 200.3f;
    char *pByte;

    pByte = &Value;

    for (i = 0; i < 4; i ++)
    Bytes[i] = *pByte ++;

    Koennte mir bitte jemand kurz erklaeren, wie ich das machen kann ?

    cu,
    Thomas



  • int i;
    char bytes[5];
    float val = ...;
    char *ptr = (char *) &val;
    
    for(i=0; i < 4; ++i)
      bytes[i] = ptr[i];
    

    sollte auf Anhieb gehen.



  • Thomas01 schrieb:

    Koennte mir bitte jemand kurz erklaeren, wie ich das machen kann ?
    cu,
    Thomas

    Ja.

    char fbytes[4];
    	float fnum = 100.00;
    	memcpy ( fbytes, &fnum, sizeof ( fbytes ) );
    	printf ( "%f\n", *(float*)fbytes ); // Nachgucken ob auch alle Bits noch da sind.
    

    Kürzer kenn ich nicht.
    MFG



  • Vielen Dank euch beiden !

    Das mit dem

    "char *ptr = (char 😉 &val;"

    funktioniert tadellos, danke !

    cu,
    Thomas


Anmelden zum Antworten