从二进制字符串转换为十进制?

sta*_*ion 1 c

在下面的代码中,我将二进制转换为十进制,然后打印与之对应的字符。

void convertToChar(int binaryChar[],int length)
{
int multiplier = 0;
int i;
int sum = 0;
for(i=length;i>=0;i++)
{
    sum = sum + (binaryChar[i]*pow(2,multiplier));
    multiplier = multiplier + 1;
}
printf("\nThe character is: %c",sum);
}
Run Code Online (Sandbox Code Playgroud)

问题出在这一行。sum = sum + (binaryChar[i]*pow(2,multiplier));它抛出错误: warning: converting toint' from double'。请帮忙!

小智 5

为什么pow要计算 2 的幂?太慢了。使用1 << p获得的两个第p电源。例如,1 << 0将给出 1,1 << 1将给出 2,1 << 2将给出 4。这是由于位移操作的性质:向左移动一位相当于乘以 2。

此外,您的程序中似乎有一个无限循环:

for(i=length;i>=0;i++)
Run Code Online (Sandbox Code Playgroud)

如果lengthis >= 0,则循环永远不会终止。

这应该解决它:

for(i = length - 1; i>=0; i--) sum += (binaryChar[i]*(1 << multiplier++));
Run Code Online (Sandbox Code Playgroud)