double aus char array



  • Hallo zusammen,

    ich bekomme über einen Bus eine Zahl die dem double Format entspricht. Also 8byte mit VZ, 11bit Exponent und 53bit Mantisse. Problem ist, daß ich über den Bus nur byteweise empfange. Ich habe also ein array aus chars.
    Wie bekomme ich dieses array in eine double Variable?
    -einen char Zeiger auf die double Variable um dann "einfach" im Speicher die bytes einzeln drüberbraten mag der compiler nicht
    -shiften läßt er mich in einer als double deklarierten Variable auch nicht.

    Gibt es noch etwas anderes als die chars bitweise zusammen ziehen und dann stumpf ausrechnen?

    Besten Dank schonmal..
    Schönen Gruß
    Jens



  • char * buffer;
    double v = * reinterpret_cast<double*> ( buffer );
    

    Aber Achtung, das wird wohl auch auf den Compiler ankommen... Ist ziemlich spezifisch mach das nur wenn du genau weißt dass dein Compiler den Double-Wert genau gleich ablegt wie er von der Schnittstelle kommt.

    edit: natürlich reinterpret_cast nicht static_cast...



  • alternativ

    double *v=(double*)buffer; //bzw reinterpret_cast<double*>(buffer)
    

    :p



  • /Edit: Liegt ja binär vor, nächste 2 Posts haben recht.

    MfG SideWinder



  • ist 'n bischen viel overhead fuer so ne kleine aufgabe. (ausserdem laaangsam).



  • @SideWinder: Les mal was der Threadersteller will. Er hat den Wert binär vorliegen und das eben byte für byte als char.



  • Vielen Dank für die schnelle Antworten!

    Das scheint zu funktionieren.
    Jetzt merke ich erst, daß das gesendete Format doch nicht so ganz passt...


Anmelden zum Antworten