簡體   English   中英

如何檢查 C 中 float32 變量的數據冗余?

[英]How to check data redundancy on float32 variable in C?

我想檢查一些 function 中變量的數據損壞。 一般來說,如果它是一個無符號的 integer 變量,我可以像下面的方法一樣輕松地檢查

發送方:

uint8 actual_data = 23;
uint8 send_data = ~actual_data; /*bitwise NOT*/
send_data_to_other(send_data, actual_data);

接收方:

void receive_data_to_other(uint8 received_data, uint8 actual_data)
{
   uint8 check_data = ~received_data;
   if(check_data == actual_data)
   {
     printf("data is correct");
   }
   else
   {
     printf("something wrong")
   }
}

但是假設如果我使用float32數據,

例如: float32 actual_data = 23.22f;

然后我不能對 float32 變量執行按位 NOT( ~ )。 有人建議我如何檢查 C 中 float32 變量的數據驗證?

假設sizeof (float) == sizeof (uint32_t)

    uint32_t data;
    uint32_t ndata;

    memcpy(&data, &f, sizeof(data));
    ndata = ~data;

但是,當然,您發送 function 將需要發送更大的數據塊。

要“重建”浮動,您需要以相反的方向復制數據。

float toFloat(uint32_t data)
{
    float f;

    memcpy(&f, &data, sizeof(f));
    return f;
}

不要擔心memcpy開銷,因為這個 function 是編譯器非常熟悉的,優化編譯器將優化調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM