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*)×tring));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?
-
timestringwird alsfloatinterpretiert und dann zuu_intgecastet. Was dabei herauskommt, ist von derfloat-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
floatsumgehen.