请问怎么将浮点数转换出来?
有个触摸屏是16年买的,一直放着洒灰,今天突然想起来用,屏幕的输出数值是4字节浮点型的,但是单片机没用过浮点型的,不知道怎么转换,单片机用的STC15W4K56S4比如在触摸屏上输入1,单片机就收到0x3F 0x80 0x00 0x00,输入2,单片机就收到0x40 0x00 0x00 0x00输入3,单片机就收到0x40 0x40 0x00 0x00输入99.99,单片机就收到0x42 0xC7 0xFA 0xE1
这种浮点数值看不懂,请教下怎么转换成正常的数值,谢谢谢谢 两种方法:
1、用联合。
union
{
float fx;
uu tmp;
}char_float;
将4个字节送到char_float.tmp[]里,则char_float.fx就是对应的浮点数。
2、强制转换。
顶一个数组 tmp,将4个字节送到tmp[]里,则 ((float *)&tmp)就是浮点数。 这就是float在内存中存储的格式(IEEE-754),如下图
下面是桌面端的实现方式,Keil C51是支持float的,这样应该可以正确运行
不过要注意一下大小端问题,可能需要赋值为0xE1FAC742这样的顺序,你自行测试一下
kksk 发表于 2023-6-2 23:23
这就是float在内存中存储的格式(IEEE-754),如下图
好的,十分感谢 梁工 发表于 2023-6-2 23:19
两种方法:
1、用联合。
union
好的,十分感谢
页:
[1]