#include <stdio.h>
int main () {
char data[4]={0x06,0x47,0xff,0x99};
unsigned char negMantissa;
unsigned long mantissa,value,exponent;
float ret;
mantissa = (((unsigned long)data[1] & 0x7f) << 16) |(((unsigned long)data[2] & 0xff) << 8) |((unsigned long)data[3] & 0xff);
printf("mantissa = %d\n",value);
if ((data[1] & 0x80) != 0)
{
negMantissa = 1;
}
else
{
negMantissa = 0;
}
exponent = (unsigned char)(data[0] & 0xff);
if (negMantissa == 0)
{
value = (((exponent + 0x7F) << 23) | mantissa) & 0x7fffffff;
printf("a= %d\n",value);
}
else if (mantissa != 0)
{
value = ((~mantissa) + 1) & 0x7fffff;
value |= 0x80000000 | ((exponent + 0x7f) << 23);
printf("b= %d",value);
}
else
{
value = 0x80000000 | ((exponent + 0x80) << 23);
printf("c= %d",value);
}
ret = *(float*)&value;
printf("ret = %f\n",ret);
return(0);
}