我需要将 IEEE 单精度浮点数写入特定地址的 32 位硬件寄存器。为此,我需要将浮点类型的变量转换为无符号整数。我可以得到这样的整数表示:
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:警告:来自不兼容指针类型的赋值”
有没有其他方法可以做到这一点不会产生警告?这是针对特定硬件的,我不需要处理不同的字节序等,并且出于性能原因,我不想循环每个字符,因为其他一些问题往往会暗示。似乎您可以在 C++ 中使用 reinterpret_cast 但我使用的是 C。