四个字节的char数组如何转换为浮点数
四个字节的char数组怎么转换为浮点数
如题,有char aa[4]={0x3e,0xc0,0x62,0x11}
怎么将其转换为浮点数
麻烦大虾指点,确实不明白怎么弄
------解决方案--------------------
------解决方案--------------------
这样对么
------解决方案--------------------
为什么我用上面人的回答就可以呢?
输出:1.78875e-028
------解决方案--------------------
int main()
{
char a[4] = {"123"};
double aa;
sscanf(a, "%lf", &aa);
cout<<aa;
getchar();
}
------解决方案--------------------
试试我在3楼的回复,要用float,不能用double的。
------解决方案--------------------
------解决方案--------------------
Interl和AMD的cpu应该是小端序的,即低位字节放在低地址。例如:int a = 1;在内存中从低地址到高地址分别是:0x01,0x00, 0x00, 0x00。
所以你的char bb[4]={0x0,0x0,0xb3,0xe2};对应的整形数值,从高位到低位分别时:0xe2,0xb3,0x00, 0x00.所以这个整数的值是:0xe2b30000。
如题,有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。