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

标签 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);
}

问题出在行 sum = sum + (binaryChar[i]*pow(2,multiplier)); 中。它抛出错误:warning: converting toint' 来自 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/

相关文章:

c++ - 我想知道我们使用的ide是否包含链接器

c - 错误: expected expression before ‘=’ token

c - gcc 错误 –Wl,-rpath,./ffmpeg/lib : No such file or directory

c - 数组指针错误?

c - 扫描带有空格的字符串

c - 使用 glOrthof 时,我只看到一个十字

c - 不同 int 类型的运算

c++ - 在 c 程序开发期间删除注释的地方

c - 为什么第一个和第三个 printf 的工作方式如此不同?

c - 我想运行一个可执行文件并从文本文件中获取输入,然后在 Windows cmd 中写入输出