Вы можете набрать данные:
- Используя memcpy
unsigned int u = 0x41700000;
float f;
memcpy(&f, &u, sizeof(f));
printf("%f\n", f);
Использование объединения (закон ИМО, многие люди имеют противоположное мнение)
union un
{
float f;
unsigned u;
};
void foo(unsigned x)
{
union un a = {.u = x};
printf("%f\n", a.f);
}
Я предполагаю, что числа с плавающей запятой && имеют одинаковый размер.
Конечно, вам придется преобразовать строка из вашего вопроса в значение без знака - но это относительно просто (scanf, atoi ....)
PS Кстати, многие компиляторы будут генерировать один и тот же код для обоих (без вызова memcpy
) https://godbolt.org/z/VaCcxS