我的程序旨在通过从输入文件中读取值,然后将二进制值输出到输出文件中,将十进制转换为二进制。可以说输入文件具有以下数字:
190 31 5 891717742
除891717742之外,所有内容都可以很好地转换为二进制。这将输出一个与二进制输出完全不同的值。香港专业教育学院尝试过长,但他们只是输出一个负值。例如,将输出:
11000100 11110010 11 "1434923237" <- not right (not the actual binary values)
十进制转换为二进制(在线):
char* convertDecimalToBinary(int n)
{
int binaryNumber = 0;
int remainder, i = 1;
static char buff[100];
while (n!=0)
{
remainder = n%2;
n /= 2;
binaryNumber += remainder*i;
i *= 10;
}
sprintf(buff, "%d", binaryNumber );
return buff;
}
答案 0 :(得分:1)
基本问题是您试图使用int来存储二进制表示形式。一个int就是那个整数。在内存中,它以二进制形式表示,但是C语法允许您在对int赋值或执行其他操作时使用基数10和基数16的文字。这可能使它看起来好像没有被视为二进制数,但实际上确实如此。在您的程序中,您混淆了以2为底的表示和以10为底的表示。 891717742(以10为底)转换为二进制是1101010010011010001000010000111110。您的算法本质上是在尝试将以10为底的数字110101001001101000100001101110存储在一个int中。以10为基数的数字甚至比64位数字还要大,实际上要花97位才能存储。
选中此答案以查看如何在C中打印出int的二进制表示形式:Is there a printf converter to print in binary format?
答案 1 :(得分:-1)
这非常容易,可以通过两个简单的步骤完成。
int main() { int n=891717742; char buff[100]; sprintf(buff, "%x", n); printf("\n buff=%s", buff); return 0; }
请看这里 How to convert a hexadecimal string to a binary string in C