如何将位字符串转换为整数?

How to convert bit string into integer?

有什么方法可以将2的补码位串转换成整数吗? 我认为对于正数来说很容易,但对于负数我有点困惑。

#include <stdio.h>
int bits2Integer(char bitString[]){
     int value = 1;
     int power = 1;
     int constantIncrement = 2;
     if(bitString[0] == 0) {
          for(int i = 32; i >= 0; i--){
               if(bitString[i] == 1){
                    value = value + power;
                    power = power * constantIncrement;
               }
               else {
                    power = power * constantIncrement;
               }
     }
}

哦,除了 stdio.h,我不想使用任何其他 library/resource。

这似乎是最好的方法

#include <stdio.h>
int bits2Integer(char bitString[]){
     int ret = 0;
     for(int i = 0; i < 32; i++)
          if(bitString[i] == '1')
            ret |= 1 << (31-i);

     return ret;
}

位运算统治世界:)

请记住,您不能拥有 33 位。