C语言 4字节(16进制)转换成浮点数的问题

如题所述

第1个回答  2020-04-08
问题1,3楼上已经解答很清楚了
回答第二个问题:
浮点数定义的存储格式:(来自百科)
单精度浮点数(single)
用来表示带有小数部分的实数,一般用于科学计算。
占用4个字节(32位)存储空间,包括符号位1位,阶码8位,尾数23位。其数值范围为-3.4e38~3.4e38,单精度浮点数最多有7位十进制有效数字,单精度浮点数的指数用“e”或“e”表示。
单精度浮点数有多种表示形式:±n.n(小数形式)
±n
e
±m(指数形式)
±n.n
e
±m
(指数形式)
如果某个数的有效数字位数超过7位,当把它定义为单精度变量时,超出的部分会自动四舍五入。
应该是传感器得到的是浮点数,通过4个字节读取出来,需要按原格式转换为浮点数形式.
第2个回答  2020-04-06
unsigned
char
*
b
=
(unsigned
char*)&a;
指针b,
指向a的首地址。怎么算出来的:从传感器传过来的CD
CC
CC
41,
小端码的话,四个字节内容
变化

0x41cccccd转
float

25.6。你可以
自己

联合体
研究:union
U{float
v;unsigned
char
c[4];unsigned
int
i;}uu;
main(){
uu.c[0]=0xcd;uu.c[1]=0xcc;uu.c[2]=0xcc;uu.c[3]=0x41;
printf("
%f
%x",uu.v,uu.i);}C语言
4字节(
16进制
)转换成
浮点数
的问题