Мне нужно написать число с плавающей точкой с одинарной точностью IEEE в 32-разрядный аппаратный регистр по конкретному адресу. Для этого мне нужно преобразовать переменную типа float в целое число без знака. Я могу получить целочисленное представление следующим образом:
float a = 2.39;
unsigned int *target;
printf("a = %f\n",a);
target = &a;
printf("target = %08X\n",*target);
который возвращает:
a = 2.390000
target = 4018F5C3
Все хорошо. Однако это вызывает предупреждение компилятора "cast.c: 12: warning: назначение из несовместимого типа указателя"
Есть ли другой способ сделать это, не генерируя предупреждение? Это относится к конкретному оборудованию, мне не нужно обрабатывать разные контенты и т.д., И я не хочу прокручивать каждый char по соображениям производительности, как это обычно указывают некоторые другие вопросы. Похоже, что вы можете использовать reinterpret_cast в С++, но я использую C.