将数组转换为整数

标签 c

有没有办法将数组转换为整数,我有下面的方法,但它似乎不起作用:

int8_t x_array[18] = {0,1,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,1};
int32_t numb;

for (int8_t j=0;j<19;j++)
{
   numb = numb + pow(2, i)*x_array[i];
}

这有什么原因吗??

PS:这是我之前发布的问题的后续问题 Joining outputs from switches 我已经编辑了问题以说明为什么建议的方法不起作用。

本质上,我想做的是在模拟器软件 RAPIDILITTE 中创建一个程序,每毫秒对 PS 输入(接近传感器系统)进行采样,这是 18 位数字输入。输入由位于端口 2 上的拨动开关 0-17(18 位)表示。输入需要在 0-9999 之间归一化)

主要问题是(我在之前发布的问题中提到过)我一次只能访问一个引脚,而不是一次读取整个端口。我尝试了很多方法来读取引脚并将它们组合成一个变量,将其转换为自然数,然后将输入归一化。最后,我认为最好的方法是将读取的每个引脚放入一个 array[18] 中,然后将其转换为一个变量,然后对其进行规范化。

最佳答案

您永远不会初始化您的变量,因此读取它是普通的未定义行为。你应该说:

int32_t numb = 0;

您还应该决定是否要将 ij 作为循环变量。

(每次计算功率也是一种浪费;相反,您应该保持一个运行的乘数,并在每一步都加倍。)

关于将数组转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12190638/

相关文章:

c - 这个宏返回什么以及如何使用它?

c - program.exe 编译后停止工作?

c - 指针在 printf() 中不起作用

c - C 中的 float

c - 这个条件语句里面发生了什么? while (a = foo(bar))

c - 球碰撞检测

c - Linux 会自动关闭文件吗?

c - 即使我覆盖分配内存的限制也没有错误?

c - 存储 PPM P3 文件的所有值

c - 将 .txt 文件存储到结构中