was bewirkt dieses casting:



  • Also ich habe hier einen Quellcode und darin verstehe ich nicht folgendes nicht:

    u_int		timevalue;
    	u_char		timestring[4] = {'\x27', '\xb3', '\xdd', '\x44', }
    
    	timevalue = (u_int)(*((float*)&timestring));
    

    Als timevalue erhalte ich dann 1773, was einer Zeit von 29:33 entspricht. Die Werte sich ok. Könnt mir jemand diese Casting Sache mathematisch erklären?
    Betrachtet man '\x27', '\xb3', '\xdd', '\x44' als Zeichenfolge für einen Integerwert dann erhielte man ja 1155380007 als Ergebniss, zu aber kommt man auf 1773?



  • timestring wird als float interpretiert und dann zu u_int gecastet. Was dabei herauskommt, ist von der float -Implementation des Compilers abhängig.



  • Wohl eher von der float-Implementation des Prozessors.
    Du kannst aber davon ausgehen, dass der sich meistens an den ISO-Standard hält, kannst ja nachlesen und nachrechnen: http://de.wikipedia.org/wiki/IEEE_754



  • nwp2 schrieb:

    Wohl eher von der float-Implementation des Prozessors.

    Nicht jeder Prozessor kann von sich aus float . Deswegen müssen manche Compiler das selbst machen.

    Selbst wenn der Prozessor das kann, muss der Compiler genauso mit floats umgehen.


Anmelden zum Antworten