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?
-
timestring
wird alsfloat
interpretiert und dann zuu_int
gecastet. 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
floats
umgehen.