#include "Types.h" #include "R3DFloat.h" float R3DFloat::GetFloat16(UINT16 f) { return ToFloat(Convert16BitProFloat(f)); } float R3DFloat::GetFloat32(UINT32 f) { return ToFloat(ConvertProFloat(f)); } UINT32 R3DFloat::ConvertProFloat(UINT32 a1) { int exponent = (a1 & 0x7E000000) >> 25; if (exponent <= 31) { // positive exponent += 127; } else { // negative exponent exponent -= 64; exponent += 127; } int mantissa = (a1 & 0x1FFFFFF) >> 2; return (a1 & 0x80000000) | (exponent << 23) | mantissa; } UINT32 R3DFloat::Convert16BitProFloat(UINT32 a1) { return ConvertProFloat(a1 << 15); } float R3DFloat::ToFloat(UINT32 a1) { return *(float*)(&a1); }