首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-11-11 
四个字节的char数组怎么转换为浮点数如题,有char aa[4]{0x3e,0xc0,0x62,0x11}怎么将其转换为浮点数麻烦大

四个字节的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。

热点排行