2 WORDs zu REAL?



  • Hallo.

    Ich habe eine C++Builder Anwendung und lese mittels ModLink Daten aus. Dabei ist eine Adresse vom Datentyp WORD. Jetzt hat man dort aber festgelegt das 2 Adressen, also 2 WORD, den Datentyp REAL entsprechen sollen. Sich also aus 2 WORD ein REAL-Wert bildet. Kann mir jemand sagen wie ich aus den 2 WORD die ich erhalte ein REAL mache? Vermutlich meint man damit DOUBLE?

    Über Hilfe wäre ich echt sehr erfreut. 😉



  • Vermutlich ist kein double gemeint, sondern float. float wird intern mit 32bit dargestellt, was sich aus 2 Words zusammenbasteln lässt. Über die Byte Order musst du dir jetzt Gedanken machen.

    float MyFloat;
    
    WORD* Base = reinterpret_cast<WORD*>( &MyFloat );
    Base[0] = w1;
    Base[1] = w2;
    


  • Vielen lieben Dank für die Hilfe. Rein aus Interesse, wie würde denn der Weg andersherum funktionieren? Also aus einem FLOAT, zwei WORD(HI,LO) zu machen?



  • Hallo

    Auch nicht anders.

    float MyFloat = ...;
    WORD* Base = reinterpret_cast<WORD*>( &MyFloat );
    WORD w1 = Base[0];
    WORD w2 = Base[1];
    

    bis bald
    akari



  • Fast genauso:

    float MyFloat;
    
    WORD* Base = reinterpret_cast<WORD*>( &MyFloat );
    WORD w1 = Base[0];
    WORD w2 = Base[1];
    

    Edit:
    Drei Punkte weniger und 50 Sekunden später als Akari 😉



  • Oh, da habe ich noch zu lernen. ^^
    Danke euch beiden vielmals!


Anmelden zum Antworten