【问题标题】:Converting a decimal integer to a binary string in C在C中将十进制整数转换为二进制字符串
【发布时间】:2018-07-07 17:02:00
【问题描述】:

下面是我尝试的代码。我使用了一个函数 char* dectobin(int) 来做到这一点。我首先将十进制整数转换为二进制整数(保存在 binary 中),然后将该二进制整数转换为字符数组(首先是反向的,然后是正确的顺序)。但我没有得到正确的输出。谁能告诉我错在哪里?

#include <stdio.h>
#include <math.h>
char* dectobin(int dec_num);
main()
{
int num;
printf("Enter the integer\n");
scanf("%d",&num);
char* bin_string=dectobin(num);
printf("The binary string representation is %s\n",bin_string);
}
char* dectobin(int dec_num)
{
int remainder;
int base=1; 
int binary=0;
int count=0;
int n;

    while (dec_num > 0)

    {

        remainder = dec_num % 2;

        binary = binary + remainder * base;

        dec_num = dec_num / 2;

        base = base * 10;

    }

 n = log10(binary) + 1;
        int i;
      char* numberArrayreverse = calloc(n, sizeof(char));
        for ( i = 0; i < n; ++i, binary /= 10 )
        {
            numberArrayreverse[i] = binary % 10;
        }
        char* numberArray=calloc(n, sizeof(char));

int j=0;
for(;j<n;j++)
{
numberArray[j]=numberArrayreverse[n-1-j];
}
 //free(numberArrayreverse);
return numberArray;
}

【问题讨论】:

  • 输入是什么? base = base * 10;binary = binary + remainder * base; 是否溢出?
  • 没有。输入很小,23。
  • 这并不能解决问题
  • calloc(n, sizeof(char)); 对于n 数字的字符串 来说也太小了。
  • @chux:同意,但它仍然有效。

标签: c string binary


【解决方案1】:

numberArrayreverse 不正确,需要将整数转换为字符。

numberArrayreverse[i] = binary % 10 + '0';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2014-08-03
    • 2014-11-07
    • 2012-08-11
    • 2015-11-29
    • 1970-01-01
    相关资源
    最近更新 更多