[英]How to store float value in uint64_t variable in C?
我有一組uint64_t
值uint64_t *data;
在我需要存儲 4 種不同數據類型的地方: int
、 char*
、 bool
、 float
。 我通過簡單轉換為(uint64_t)
解決了每種類型,但它不適用於 float:
float val = 1.5f;
uint64_t var = (uint64_t) val;
printf("%.1f", (float) var); // prints 1.0
有沒有辦法在比強制轉換更低級別的變量之間移動數據? 我嘗試以各種方式組合轉換,但結果是0.0
或1.0
。
...將
float
值存儲在uint64_t
變量中...
復制它。
float var_f = 1.5f;
uint64_t var_u64;
_Static_assert(sizeof var_f <= sizeof var_u64, "Wide float");
memcpy(&var_u64, &var_f, sizeof var_f);
恢復
memcpy(&var_f, &var_u64, sizeof var_f);
printf("%g\n", var_f);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.