如何将位串转换为整数?

时间:2015-06-07 17:16:54

标签: c bit

有没有办法将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之外的任何其他库/资源。

1 个答案:

答案 0 :(得分:2)

这似乎是最好的方式

#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位。