浮點數轉字節組存儲

       浮點數轉字節組存儲,主要用於嵌入式等一些特殊情況,比如串口傳數據,其主要思路是將浮點數(通常爲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;

特別注意:

如果發送端和接收端遵循的浮點規則相同,發送和接收的順序必須一樣,順序、倒序甚至是亂序都無所謂,只要發送和接收兩者相同即可

如果兩臺機器浮點數遵循的標準不一樣,則需要調整一些接收字節的順序


 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章