2

我正在尝试将 float 转换为 C 中的按位 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 是一个浮点类型,我试图将它转换为高整数和低整数,因为我试图将数据以 16 位块的形式保存在 EEPROM 中(因为我使用的是 16 位微控制器)。我知道“>>”不适用于浮点类型。我该如何解决这个问题?

4

1 回答 1

3

创建一个单独的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);
于 2020-11-18T21:42:39.557 回答