我必须将二进制字符串转换为整数。我可以用& | <<和>>。没有取幂,没有嵌入函数。
答案 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的回答。