无法将十进制的int转换为二进制的int

时间:2019-02-17 17:59:52

标签: c binary

我是编程新手。我在将十进制整数转换为二进制整数时遇到麻烦。目的是输入两个ASCII值(假设它们是AB)并将其转换为二进制整数,而无需使用数组来存储二进制值。我已经尝试了许多方法来尝试解决该问题,但是我在程序中所具有的逻辑非常合乎逻辑并且对我来说很有意义。如果输入“ AB”,则程序的输出为1488373225。预先感谢!

这是我的代码:

 int converttoBinary(char input[MAX_1]){

    int temp2 = 0, rem = 0, i = 1, binary = 0, temp = 0;

    printf("\n");
    temp = input[0];
    temp2 = input[1] * 100;
    temp = temp + temp2;

    printf("%d", temp);
    while (temp > 0){
            rem = temp % 2;
            binary += rem * i;
            i *= 10;
            temp /= 2;
    }

    printf("The final binary value of %s is: %d", input, binary);

return binary;
}

1 个答案:

答案 0 :(得分:0)

您的代码无法正常工作的原因是因为C语言中的int不够大,无法存储此15位数字,所以出现了溢出。尝试仅在一个char上运行代码,您会发现它工作正常。 正如评论中已经说过的-将这个“二进制”存储在int中没有意义,您可能应该将其存储为字符串。而且,如果您只需要打印二进制格式,则只需在循环中打印数字,而不用存储整个二进制文件。
另一个小问题-它不会影响代码的结果,但是在进行按位运算时,最好使用按位运算符-在您的情况下,& 1% 2>> 1插入而不是/ 2