浮点数转字节组存储

       浮点数转字节组存储,主要用于嵌入式等一些特殊情况,比如串口传数据,其主要思路是将浮点数(通常为4字节),每个字节单独传送,到接收端再将它们组合成一个浮点数即可。在C语言中,我们可以采用union方式实现。

union f_data
{
float fdata;
unsigned char cdata[4];
}data; //单精度的浮点数,便于拆分字节

//如果是双精度的则定义为
//union f_data
//{
//double fdata;
//unsigned char cdata[8];
//}data;

//下面为发送
void send_data(void)
{
data.fdata = 3.14159;
send(data.cdata[0]);
send(data.cdata[1]);
send(data.cdata[2]);
send(data.cdata[3]);
}

//则接收程序如下
void receive_data(void)
{
data.cdata[0] = receive_byte();
data.cdata[1] = receive_byte();
data.cdata[2] = receive_byte();
data.cdata[3] = receive_byte();
}
//接收到的数据为data.fdata;

特别注意:

如果发送端和接收端遵循的浮点规则相同,发送和接收的顺序必须一样,顺序、倒序甚至是乱序都无所谓,只要发送和接收两者相同即可

如果两台机器浮点数遵循的标准不一样,则需要调整一些接收字节的顺序


 

猜你喜欢

转载自blog.csdn.net/tumblerman/article/details/10949407