满意答案
mattpin
2013.11.04
采纳率:53% 等级:12
已帮助:9622人
先将浮点数拆开成四个字节,然后依次写入到2402中,恢复的时候依次读出,因此,解决此问题的难点就是浮点数拆分与恢复问题:下面给出参考:
#define uchar unsigned char
uchar F_Split[4];
union Float2Char //申明一个浮点型与4B型的联合体
{
float Float;
struct ByteF4 //为了不让4个char变量也共用同一地址,需要一个结构体(或者定义一个数组,例如uchar Bytes[4])
{
uchar Byte_HH ; //MSB 0
uchar Byte_HL ; //1
uchar Byte_LH; //2
uchar Byte_LL; //LSB 3
}Bytes;
};
void main()
{
//--------------数据定义------------------
float Pi = 3.141593; //待拆分的浮点数0x40490FDC
union Float2Char F_Data; //定义一个联合体,名为F_Data
//--------------拆分---------------------
F_Data.Float=Pi; //对联合体中的浮点型成员赋值
F_Split[0]=F_Data.Bytes.Byte_HH; //得到最高字节
F_Split[1]=F_Data.Bytes.Byte_HL; //得到次高字节
F_Split[2]=F_Data.Bytes.Byte_LH; //得到次低字节
F_Split[3]=F_Data.Bytes.Byte_LL; //得到最低字节
//------------恢复----------------------
F_Data.Bytes.Byte_HH=F_Split[0]; //最高字节
F_Data.Bytes.Byte_HL=F_Split[1]; //次高字节
F_Data.Bytes.Byte_LH=F_Split[2]; //次低字节
F_Data.Bytes.Byte_LL=F_Split[3]; //最低字节
Pi=F_Data.Float; //恢复出浮点数
}
00分享举报