C:使用位转换为整数

C:使用位转换为整数,c,bit,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 v

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;
 }
int-toInt(int*bin\u-arr){
int-val=0;
while(*bin_arr)

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

此外,在该表达式中:

(*bin_arr++ == '1')

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

算术运算通常用于执行所需操作。通过位运算(仅限位运算)执行此操作比实际操作复杂得多。“整数数组”是什么意思你的意思是只包含整数1和0的数组吗?更正。只包含整数hanks,现在我有val=(val=0;I--)我这样做了,但似乎返回值,与我的数组无关,只依赖于I的初始值