将Ascii转换为二进制

时间:2014-06-26 00:26:57

标签: c count binary ascii

我正在编写一个程序,我需要将Ascii字符转换为二进制,然后进行计数。我已经使我的代码工作,但它正在打印其他信息,而不一定是正确的二进制文件。下面是我的代码以及给定字符集的输出。非常感谢任何帮助!

#include <stdio.h>
#include <stdlib.h>

    void binaryPrinter(int digEnd, int value, int * noOfOnes);
    void print(char c);

    int charToInt(char c)
    {
        return (int) c;
    }

    int main()
    {
        char value;
        int result = 1;
        while(result != EOF)
    {
        result = scanf("%c", &value);
        if(result != EOF)
        {
            print(value);
        }
    }
 }

    void binaryPrinter(int digEnd, int value, int * noOfOnes)
    {
        if(value & 1)
        {
        (*noOfOnes) = (*noOfOnes) + 1;
        value = value >> 1;
        digEnd--;
        printf("1");
        }
    else
        {
        value = value >> 1;
        digEnd--;
        printf("0");
        }

    if(digEnd == 0)
        return;
    else
        binaryPrinter(digEnd, value, noOfOnes);
    }

    void print(char c)
        {
        int count = 0;
        printf("The character %c =", c);
        binaryPrinter(8, charToInt(c), &count);
        printf(" 1's = %d\n", count);
        }

1 个答案:

答案 0 :(得分:2)

这是一对功能:

void printCharAsBinary(char c) {
    int i;
    for(i = 0; i < 8; i++){
        printf("%d", (c >> i) & 0x1);
    }
}

void printStringAsBinary(char* s){
    for(; *s; s++){
        printCharAsBinary(*s);
        printf(" ");
    }
    printf("\n");
}

您可以在此处看到它们:http://ideone.com/3mEVbE。它们通过屏蔽每个字符的一个位并一次打印一个来工作。