Мне нужно записать число с плавающей запятой одинарной точности 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: предупреждение: назначение из несовместимого типа указателя»
Есть ли другой способ сделать это, который не генерирует предупреждение? Это для конкретного оборудования, мне не нужно обрабатывать разные порядки байтов и т. Д., И я не хочу перебирать каждый символ по соображениям производительности, как предполагают некоторые другие вопросы. Кажется, вы могли бы использовать reinterpret_cast в C++, но я использую C.