将 Ascii 转换为 C 中的二进制

3ki*_*ngs 1 c binary ascii

所以这是我的代码

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' 而不是正确的二进制文件。

感谢大家的帮助。

Dav*_*rtz 5

您以错误的顺序打印结果。正确的输出是“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)