浮點數轉字節組存儲,主要用於嵌入式等一些特殊情況,比如串口傳數據,其主要思路是將浮點數(通常爲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;
特別注意:
如果發送端和接收端遵循的浮點規則相同,發送和接收的順序必須一樣,順序、倒序甚至是亂序都無所謂,只要發送和接收兩者相同即可
如果兩臺機器浮點數遵循的標準不一樣,則需要調整一些接收字節的順序