Umwandlung von 4 Bytes in 1 Float ?



  • Guten Morgen C/C++ Forum,

    ich habe ein Anliegen zur Umwandlung von bytes in float, d.h. ich bekomme von einem Messtechnik-Computer (per socket connection, client/server) Messdaten im nachfolgenden byte Format (so steht es in der zugehörigen Beschreibung),

    1. byte => FRAC-L
    2. byte => FRAC-M
    3. byte => FRAC-H
    4. byte => SGN+EXP

    da meine Programmierung "sozusagen Datenmüll erzeugt" ist mein Anliegen, ob mir jemand eine korrekte Umwandlung 😕 der vorstehenden 4 bytes in 1 float oder eine entsprechend vorhandene Funktion 😕 empfehlen kann,

    mit freundlichen Grüssen

    ZZR-1100



  • hm... wär da nicht ein union angebracht?

    union Test
    {
       float zahl; //sizeof(float) == 4
       char bytes[4];
    };
    
    Test t;
    t.bytes[0] = FRAC-L;
    t.bytes[1] = FRAC-M;
    t.bytes[2] = FRAC-H;
    t.bytes[3] = SGN+EXP;
    
    std::cout << t.zahl << std::endl;
    


  • Vielen Dank "zwutz" !!!

    Es klappt wirklich hervorragend, ich muss halt nur die bytes nicht von 1..4 einlesen sondern von 4..1, aber das hängt ja mit der byte-Reihenfolge zusammen daweil der Messtechnik-Computer ein Microsoft-PC ist und der Auswerte-Computer eine Unix-Workststion, wie dem auch sei es klappt wirklich hervorragend,

    nochmals Vielen Dank

    ZZR-1100


Anmelden zum Antworten