[英]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.