C将float转换为int数组

时间:2019-07-26 09:44:30

标签: c arrays floating-point int i2c

我正在尝试将'float'变量转换为整数数组,因为我要通过I2C总线发送该变量,而I2C一次只能执行1个字节的事务。我正在考虑制作一个大小为4的整数数组(每个事务在索引处为1个字节)。

我知道,如果我们想使用memcpy()将'float'转换为'string',则可以简单地做到这一点,但是我想将'float'变量直接转换为int数组,然后发送我的数组来执行一次操作1个字节。我将不胜感激!预先谢谢你。

1 个答案:

答案 0 :(得分:3)

尚不清楚您真正追求的是什么,但是如何做呢?

// original float value
float value = 42.0f;

// intermediate char buffer to allow memcpy of float's bytes
char charbuf[sizeof float];
memcpy(charbuf, &value, sizeof float);

// the actual int array you want, use for loop to copy the ints
int intarray[sizeof float];
for(unsigned index = 0; index < sizeof float; ++index) {
    intarray[index] = charbuf[index];
}

如果您实际上使用整数数组(char是整数)并且不需要使用确切的int[]类型,那么您可以跳过最后一部分以上代码。

相关问题