急救!!float型数值转换【已经解决,谢谢各位高手】
各位高手帮帮忙吧,我真要崩溃了。我要把从串口采回来的数据转换成float 型的,用了三种办法都不行,请高手给指点一下,我该怎么做。
我采回来的16进制数值如下:7E为帧头,每四个16进制数组成一个浮点数,
7E 18 1F 03 F3 F3 98 06 30 1E C3 18 30 66 FC 98 FE 60 03 7E 30 78 0C 60 03 80 E6 78 30 E6 E0 E0 7E 1E F0 1E 30 06 FF 18 C0 9E 1E 80 98 80 1E 00 60 0C 60 30 00 00 00 1E 00 1E 00 00 00 1E 00 FE 9E FE 00 06 3F 80 98 86 9E 06 30 1E 0C 86 98 7E 03 18 30 80 FE 78 CC 66 03 7E 30 60 0F 18 CC 66 33 78 30 1E CC 78 0C E6 9E 1E 30 18 0C 18 F3 60 03 1E 30 00 F8 06 CF 18 CF 1E F0 66 03 FE E6 80 E6 06 F0 66 C3 06 C3 80 86 06 F0 9E FE 00 00 78 FE 06 03 1E 30 18 0C E6 78 86 00 1E 30 E6 E0 06 0F 7E 30 78 C3 1E F3 78 30 60 F0 66 CF 06 C3 E0 E6 66 F0 1E C3 9E 1E 00 18 30 80 9E FE 86 F8 9E 78 98 9E 78 70 F3 CF 00 18 F0 1E 3C 86 86 06 30 9E FE 00 F8 FE 9E F8 18 03 1E 30 FE E6 18 CF E0 FE 00 86 98 80 F8 06 0F 7E 30 E0 E0 1E FF 1E CC 60 F0 E6 06 33 18 3C 66 F0 9E FE E0 F8 9E FE 18 30 E6 98 80 F8 66 F0 E0 7E 1E 1C 0F 78 7E 70 03 FC 9E FE 06 C3 86 F8 00 FE 9E FE 00 06 C0 1E CC 1E 03 1E 30 9E E0 60 33 60 FF 00 86 F8 78 03 18 0F 7E 30 E0 86 98 66 FC 60 F0 98 E6 98 E0 80 9E 66 F0 06 3C E0 FE F8 E0 1E 30 98 98 66 3F 9E E6 E6 7E 86 E0 F8 9E E0 06 F0 86 7E
方法1:
matchedchar=Buffer+ loopnumber_A+2;
Fmt (val, "%f<%s", matchedchar);
writeBuffer =*val;
方法2:
CopyString (tt, 0, Buffer, 2,4);
force=atof(tt);
writeBuffer = force;
方法3:
CopyString (tt, 0, Buffer, 2,4);
force=(float)*tt;
writeBuffer = force;
[ 本帖最后由 l-huang 于 2008-9-28 16:08 编辑 ] 呵呵,还是对数据类型理解的问题,建议大家学c语言要把基础的东西看透,给你个参考
union
{
float fdata;
char ch;
}xx;
xx=Buffer;//18
xx=Buffer;//18 呵呵,还是对数据类型理解的问题,建议大家学c语言要把基础的东西看透,给你个参考
union
{
float fdata;
char ch;
}xx;
xx=Buffer;//18
xx=Buffer;//1F
xx=Buffer;//03
xx=Buffer;//F3
这个时候,你读
xx.fdata 就是浮点数
但我试了一下,这几个字节对应的浮点数不对啊。请确定数据是否正确allqq-mogudiandian-30all 呵呵,还是对数据类型理解的问题,建议大家学c语言要把基础的东西看透,给你个参考
union
{
float fdata;
char ch;
}xx;
xx=Buffer;//18
xx=Buffer;//1F
xx=Buffer;//03
xx=Buffer;//F3
这个时候,你读
xx.fdata 就是浮点数
但我试了一下,这几个字节对应的浮点数不对啊。请确定数据是否正确allqq-mogudiandian-30all 不会用啊, 这个共用体,是在公式节点里面实现吗?allqq-mogudiandian-30all 我就是用的sunshuai教我的办法解决的。我想他已经说的很清楚了 。你把上面的代码加入到你的程序中试试。应该是可以成功的。
页:
[1]