我正在尝试将'float'变量转换为整数数组,因为我要通过I2C总线发送该变量,而I2C一次只能执行1个字节的事务。我正在考虑制作一个大小为4的整数数组(每个事务在索引处为1个字节)。
我知道,如果我们想使用memcpy()将'float'转换为'string',则可以简单地做到这一点,但是我想将'float'变量直接转换为int数组,然后发送我的数组来执行一次操作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[]
类型,那么您可以跳过最后一部分以上代码。