void FloatToString(float fNum,char *pStr)
{
unsigned int nData = ((unsigned int *)&fNum)[0];
for (int i = 0;i < 32;i ++)
{
pStr[31 - i] = (char)(nData & 1) + '0';
nData >>= 1;
}
pStr[32] = '\0';
}
void DoubleToString(double dNum,char *pStr)
{
UINT64 nData = ((UINT64 *)&dNum)[0];
for (int i = 0;i < 64;i ++)
{
pStr[63 - i] = (char)(nData & 1) + '0';
nData >>= 1;
}
pStr[64] = '\0';
}
float StringToFloat(char *pStr)
{
unsigned int nData = 0;
float *pData;
for (int i = 0;i < 31;i ++)
{
nData += (pStr[i] - '0');
nData <<= 1;
}
nData += (pStr[31] - '0');
pData = (float *)&nData;
return *pData;
}
double StringToDouble(char *pStr)
{
UINT64 nData = 0;
double *pData;
for (int i = 0;i < 63;i ++)
{
nData += (pStr[i] - '0');
nData <<= 1;
}
nData += (pStr[63] - '0');
pData = (double *)&nData;
return *pData;
}
void PrintfBinary(unsigned char cData)
{
for (int i = 7;i >= 0;i --)
{
if (cData & (1 << i))
{
cout << "1";
}
else
{
cout << "0";
}
}
}
float fNum = 7.5;
unsigned char *pChar = reinterpret_cast<unsigned char *>(&fNum);
for(int i = sizeof(float) - 1; i >= 0; --i)
{
PrintfBinary(pChar[i]);
}
以上是简单验证和实现的例子。。