访问字符串中的元素?

时间:2013-02-21 00:19:23

标签: c

我必须将给定的二进制输入(例如1101)转换为十进制,但输入不是字符串数组或整数(传递的参数是const char *binstr)。我怎么能访问二进制数的每个数字,所以我可以在每个数字上做pow(x,y)并将它们加在一起得到十进制数?

4 个答案:

答案 0 :(得分:0)

binstr[0];
binstr[1];
binstr[2];

或者你可以通过指针

来完成
char* s = binstr;
unsigned long x =0;
while(*s) { x = x << 1; x |= (*s == '1' ? 1:0); s++;} 
printf("the decimal of %s is %ul", binstr, x);

答案 1 :(得分:0)

const char *通常是指C字符串。您可以使用strtol(3)

int x = strtol(binstr, NULL, 2);

答案 2 :(得分:0)

你已经创建了一个c string,你可以使每个角色的方式类似于数组:

input[i]

以下是将二进制字符串拆分为单个位(字符)并将其打印出来的示例:http://cfiddle.net/wYtKJv

你可以使用循环:

while(i<100){

if(binstr[i]== '\0'){
   break;
}

printf("First Bit:\n%c\n\n",binstr[i]);
i++;
}

由于C字符串为空终止,您可以检查我们点击的字符是'\0'break循环。

在循环中,您还可以将chars转换为ints并将其存储在某个位置(可能是数组),您可以在其中进行计算。

答案 3 :(得分:0)

您可以尝试使用此程序从Binary转换为Decimal

char *binstr = "1011011";
int   num = 0, sum = 0, ctr = 0;

ctr = strlen(binstr) - 1;
do{
    sum += ((binstr[ctr] & 0x1) << num);
    ctr--;
    num ++;
}while(ctr >= 0);