在下面的代码中,我将二进制转换为十进制,然后打印对应的字符。
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);
}
问题出在行 sum = sum + (binaryChar[i]*pow(2,multiplier));
中。它抛出错误:warning: converting to
int' 来自 double'
。请帮忙!
最佳答案
为什么要使用 pow
计算 2 的幂?太慢了。使用 1 << p
获得二的 p 次方。例如,1 << 0
将给出 1,1 << 1
将给出 2,1 << 2
将给出 4。这是由于位移操作的性质:向左移动一位相当于乘以 2。
此外,看起来你的程序中有一个无限循环:
for(i=length;i>=0;i++)
如果length
>= 0,循环永远不会终止。
这应该可以解决:
for(i = length - 1; i>=0; i--) sum += (binaryChar[i]*(1 << multiplier++));
关于从二进制字符串转换为十进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7089511/