所以这是我的代码
void ascToBinary(int character, int *ones)
{
if(character == 1)
{
printf("1");
*ones+=1;
return;
}
else
{
if((character%2) == 0)
{
printf("0");
character = character/2;
}
else
{
printf("1");
character = character/2;
*ones+=1;
}
binaryPrinter(character, ones);
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以尝试帮助我解决这里出了什么问题。它编译得很好,并且正确地执行了一些 ascii 字母。如果您尝试使用 'e',它会打印出 '1010011' 而不是正确的二进制文件。
感谢大家的帮助。
您以错误的顺序打印结果。正确的输出是“1100101”。你可以像这样翻转它:
void ascToBinary(int character, int *ones)
{
if(character == 1)
{
printf("1");
*ones+=1;
return;
}
else
{
char out;
if((character%2) == 0)
{
out = '0';
character = character/2;
}
else
{
out = '1';
character = character/2;
*ones+=1;
}
ascToBinary(character, ones);
putchar (out);
}
}
Run Code Online (Sandbox Code Playgroud)