二进制字符串到int

时间:2011-01-16 09:07:15

标签: java

我必须将二进制字符串转换为整数。我可以用& | <<和>>。没有取幂,没有嵌入函数。

3 个答案:

答案 0 :(得分:2)

将值初始化为0

从左到右遍历字符串,如下所示:
  将值向左移一位 - << 1
  如果字符为'1',请添加一个 - | 0x1

答案 1 :(得分:1)

尝试以下方法。由于内置了字符串,因此不使用内置方法就无法使用它。 ;)

String text =
long l = 0;
for(byte b: text.getBytes()) l = (l << 1) | (b & 1);

答案 2 :(得分:0)

由于我们仍然在这,这是我的基于C的解决方案:

#include <stdio.h>

int main (int argc, char **argv)
{
        long long unsigned int r = 0;

        int i;

        if (argc < 2)
            return 1;

        for (i = 0; argv[1][i] != 0; ++i)
                r = (r << 1) | ((argv[1][i] == '1')?1:0);

        printf("%llu\n", r);

        return 0;
}

由于它是家庭作业,我故意将Java翻译留给读者。它不应该很难,特别是考虑到Peter Lawrey的回答。