C語言中Union(共用體)在上下位機通信中的大作用

共用體的定義格式爲:

union 共用體名{
    成員列表
};

結構體和共用體的區別在於:結構體的各個成員會佔用不同的內存,互相之間沒有影響;而共用體的所有成員佔用同一段內存,修改一個成員會影響其餘所有成員。

介紹下要應用的場景,下位機採集到的數據類型是float型,需要通過串口發送到上位機然後再進行計算得到結果,由於通信協議的中每個字節都是uint型,比較笨的辦法是把float型通過計算轉換成整型再傳輸,但是這樣以來精度受到了影響,每次要傳輸的內容增加,也增加了運算,比較麻煩;這個時候用共用體真實爽翻了;

定義共用體

typedef union
{
    uint8_t numChar[4];
    float numFloat;
}FloatUnion;

float類型佔用4個字節,numChar[4]也是4個字節,他兩佔用同一段內存,在最底層計算機存儲的內容是一樣的。非常贊

 

 

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