Float byteweise auslesen



  • Hallo,

    ein Float-Wert wird bekanntlich in 4 Bytes im Arbeitsspeicher gespeichert.
    Gibt es eine Möglichkeit, den Wert jedes einzelnen dieser 4 Byte auszulesen?

    Vermutlich könnte man das auch berechnen, aber vielleicht gibts eine einfachere
    Möglichkeit?



  • Heinz Dieter schrieb:

    ein Float-Wert wird bekanntlich in 4 Bytes im Arbeitsspeicher gespeichert.

    Es sind nicht unbeding 4 Bytes, aber auf jeden Fall sizeof( float ) Bytes.

    Heinz Dieter schrieb:

    Gibt es eine Möglichkeit, den Wert jedes einzelnen dieser 4 Byte auszulesen?

    Ja.

    Heinz Dieter schrieb:

    Vermutlich könnte man das auch berechnen, aber vielleicht gibts eine einfachere Möglichkeit?

    Ja.

    Ne, scherz beiseite. Du machst es mit einem Pointer auf das erste Byte und zählst ihn dann bis sizeof( float ) - 1 hoch:

    #include <iostream>
    
    using namespace std;
    
    int main( )
    {
        float f = 1.2345f;
        unsigned char *p = reinterpret_cast< unsigned char * >( &f );
    
        cout << f << " is represented as ";
    
        for( size_t i = 0; i < sizeof( float ); ++ i ) {
    
            cout << "0x";
            cout.width( 2 );
            cout.fill( '0' );
            cout << static_cast< int >( p[ i ] );
    
            if( i != ( sizeof( float ) - 1 ) )
                cout << ", ";
        }
    
        cout << " in memory." << endl;
    }
    

    Greetz, Swordfish



  • Danke!


Anmelden zum Antworten