四个字节的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的。
[解决办法]
#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。