IEEE 754标准,求指导。
大家好~我是C++初学者~最近在学习IEEE 754
float Rule::ieee2int(unsigned char *szData)
{
for(int i = 0; i < 4;i++)
{
sign = szData[i] < 0? 1: 0;
jbs = abs(szData[i]); //绝平方对值
exp = (int)sqrt((double) szData[i]);//开平方
decimal =((*szData / pow( 2, exp)) - 1 )* 0x7fffff;
exp += 127;
}
return (BYTE)sign << 31 | (BYTE)exp << 23 | (BYTE)decimal;
}
这是我从网上找来的代码修改弄成的函数,现在我想计算出00 a0 bb 41 这4个字节的值
按照网上教的计算公式计算出是23.453125,但是我的函数计算出来的一直不对,实在没办法,但是又不想就这样放弃,希望大家能帮助。谢谢 byte float c++
[解决办法]
#include <stdio.h>
typedef union
{
float fv;
unsigned long lv;
}var_t;
float ieee2int(unsigned char* datas)
{
var_t var;
int i;
var.lv = 0L;
for(i = 0; i < 4; i++)
var.lv
[解决办法]
= datas[i] << (i * 8);
return var.fv;
}
int main(int argc, char* argv[])
{
unsigned char datas[] = {0x00, 0xa0, 0xbb, 0x41};
printf("%f\n", ieee2int(datas));
return 0;
}