0

C:使用位转换为整数

我需要从 0、1 的位数组中获取整数值。

我想传递整数数组并使用位运算符获取十进制数。

以下是我尝试过但在尝试传递 int 数组时不起作用的方法,它适用于char* array。有什么方法可以传递 int 数组并将其转换为十进制数?我想使用位运算符。

 int toInt(int* bin_arr) {

  int val = 0;
  while (*bin_arr)
   val = (val << 1) | (*bin_arr++ == '1');
  return val;
 }

提前致谢。

4

1 回答 1

0

您的循环条件假定数组以 0 结尾,这对字符串有效,但对整数数组无效。解决此问题的一种方法是将长度参数与 int 指针一起传递,以便您知道何时停止迭代。

此外,在这个表达式中:

(*bin_arr++ == '1')

如果您传递的是整数而不是字符,则应该删除单引号。

于 2013-10-04T23:23:44.757 回答