我正在尝试在C中将float强制转换为逐位int。以下是我的代码片段:
write_eeprom(INDEX_CONFIG_TEMPERATURE_OFFSET_HIGH_INT, (unsigned int) (temperature_offset>>16));
write_eeprom(INDEX_CONFIG_TEMPERATURE_OFFSET_LOW_INT, (unsigned int) (temperature_offset));
我得到以下错误:
error: invalid operands to binary >> (have 'float' and 'int'),
在尝试编译时。这里,temperature_offset是一个浮点类型,我试图将其转换为高int和低int,就像我试图将数据保存在EEPROM中的16位块中一样(就像我使用的是16位微控制器一样(。我知道‘>gt;'不适用于浮点类型。如何解决此问题?
创建一个单独的unsigned int
变量,并将浮点值memcpy
放入其中,然后进行此操作。
unsigned int temperature_offset_int;
memcpy(&temperature_offset_int, &temperature_offset, sizeof(temperature_offset));
write_eeprom(INDEX_CONFIG_TEMPERATURE_OFFSET_HIGH_INT, temperature_offset_int >> 16);
write_eeprom(INDEX_CONFIG_TEMPERATURE_OFFSET_LOW_INT, temperature_offset_int & 0xffff);