四个字节的char数组如何转换为浮点数

四个字节的char数组怎么转换为浮点数
如题,有char aa[4]={0x3e,0xc0,0x62,0x11}
怎么将其转换为浮点数
麻烦大虾指点,确实不明白怎么弄

------解决方案--------------------

float do = *(float*)(aa);

------解决方案--------------------
char aa[4]={0x3e,0xc0,0x62,0x11};
double daa = 0;
memcpy(&daa, aa, sizeof(aa));

这样对么
------解决方案--------------------
为什么我用上面人的回答就可以呢?
#include "stdafx.h"
#include <iostream>


int _tmain(int argc, _TCHAR* argv[])
{
    char aa[4]={0x3e,0xc0,0x62,0x11};

    float* pf = ( float*)aa;

    std::cout << ( *pf ) << std::endl;
    std::cin.get();
return 0;
}


输出:1.78875e-028
------解决方案--------------------
int main()
{
char a[4] = {"123"};

double aa;

sscanf(a, "%lf", &aa);

cout<<aa;

getchar();
}
------解决方案--------------------
试试我在3楼的回复,要用float,不能用double的。

引用:
Quote: 引用:

Quote: 引用:

char aa[4]={0x3e,0xc0,0x62,0x11};
double daa = 0;
memcpy(&daa, aa, sizeof(aa));

这样对么
应该是float

请问有没有能实现的方法,楼上各位提供的都不能用

------解决方案--------------------
#pragma warning(disable:4305)
#include <stdio.h>
int main() {
char aa[4]={0x3e,0xc0,0x62,0x11};
char bb[4]={0x11,0x62,0xc0,0x3e};
    printf("%g,%g\n",((float *)aa)[0],((float *)bb)[0]);
    return 0;
}
//1.78875e-028,0.375748


------解决方案--------------------
Interl和AMD的cpu应该是小端序的,即低位字节放在低地址。例如:int a = 1;在内存中从低地址到高地址分别是:0x01,0x00, 0x00, 0x00。

所以你的char bb[4]={0x0,0x0,0xb3,0xe2};对应的整形数值,从高位到低位分别时:0xe2,0xb3,0x00, 0x00.所以这个整数的值是:0xe2b30000。