C:使用位转换为整数

时间:2013-10-04 23:12:11

标签: c bit

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;
 }

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

此外,在此表达式中:

(*bin_arr++ == '1')

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