c语言四字节转浮点数_C语言浮点书于字节互相转换

绝地灬酷狼 2023-01-08 07:24 258阅读 0赞

//字节转为浮点数

float ByteToFloat(unsigned char m[])

{

// 求符号位

float sig = 1.;

if (m[3] >=128.)

sig = -1.;

//求阶码

float jie = 0.;

if (m[3] >=128.)

{

jie = m[3]-128. ;

}

else

{

jie = m[3];

}

jie = jie * 2.;

if (m[2] >=128.)

jie += 1.;

jie -= 127.;

//求尾码

float tail = 0.;

if (m[2] >=128.)

m[2] -= 128.;

tail = m[0] + (m[1] + m[2] * 256.) * 256.;

tail = (tail)/8388608; // 8388608 = 2^23

float f = sig * pow(2.0f, jie) * (1+tail);

return f;

}

//浮点数到十六进制转换

void FloatToByte(float floatNum,unsigned char* byteArry)

{

char* pchar=(char*)&floatNum;

for(int i=0;i

{

*byteArry=*pchar;

pchar++;

byteArry++;

}

}

使用方法

int _tmain(int argc, _TCHAR* argv[])

{

float c=70.0;

unsigned char bcd[4]=””;

FloatToByte(c,bcd);

printf(“%x %x %x %x\r\n”,bcd[0],bcd[1],bcd[2],bcd[3]);

char* pchar=(char*)&c;

float e=ByteToFloat(bcd);

printf(“%.1f”,e);

return 0;

}

输出结果

0 0 8c 42

70.0

注意:本文归作者所有,未经作者允许,不得转载

发表评论

表情:
评论列表 (有 0 条评论,258人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C语言——点数格式

    Description   输入n(0<n≤10000)个浮点数,要求把这n个浮点数重新排列(并非排序,而是对齐)后再输出。每个浮点数中都有小数点且总长度不超过50位。 I

    相关 C语言点数

      浮点数的概念        浮点数也称小数或实数。例如,0.0、75.0、4.023、0.27、-937.198 都是合法的小数。这是常见的小数的表现形式,称为十进