浮点数转字节组存储

       浮点数转字节组存储,主要用于嵌入式等一些特殊情况,比如串口传数据,其主要思路是将浮点数(通常为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;

特别注意:

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

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


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值