把二进制的数字转换成十进制并找出对应ASCII字母

输入(input.txt)
二进制数字
输出(output.txt)
对应文字列

例如
输入
010010000110010101101100011011000110111100100000010101110110111101110010011011000110010000100001
输出
Hello World!
希望参照以下代码

img

供参考:

#include <stdio.h>
#include <string.h>
void binary2char(FILE* input_file, char message[])
{
    char ch;
    int i = 0, k = 0 , n = 0;
    while ((ch = fgetc(input_file)) != EOF) 
    {
        i++;
        if (i % 8 == 0)
        {
            n = n * 2 + (ch - '0');
            message[k++] = n;
            n = 0;
        }
        else {
            n = n * 2 + (ch - '0');
        }
    }
    message[k] = '\0';
}
int main()
{
    const char* input_file_name = "input.txt";
    const char* output_file_name = "output.txt";
    FILE* input_file = fopen(input_file_name, "r");
    FILE* output_file = fopen(output_file_name, "w");
    if (input_file == NULL)
    {
        printf("Error opening file %s\n", input_file_name);
        return 1;
    }
    if (output_file == NULL)
    {
        printf("Error opening file %s\n", output_file_name);
        return 1;
    }
    char message[100] = { 0 };
    binary2char(input_file, message);
    fprintf(output_file, "%s", message);
    fclose(input_file);
    fclose(output_file);
    return 0;
}

一次截取八个字符,转成十进制用char类型的保存

#include <stdio.h>
#include <string.h>
void binary2char(FILE* input_file, char message[])
{
    char ch, cd=0;
    int i=0, j=0;
    while ((ch = fgetc(input_file)) != EOF)
    {

        cd = cd * 2 + (ch-'0');
        i++;
        if (i == 8)
        {
            message[j++] = cd;
            cd = 0;
            i = 0;
        }
    }
    message[j] = '\0';
}

int main()
{
    const char* input_file_name = "input.txt";
    const char* output_file_name = "output.txt";
    FILE* input_file = fopen(input_file_name, "r");
    FILE* output_file = fopen(output_file_name, "w");
    if (input_file == NULL)
    {
        printf("Error opening file %s\n", input_file_name);
        return 1;
    }
    if (output_file == NULL)
    {
        printf("Error opening file %s\n", output_file_name);
        return 1;
    }
    char message[100] = { 0 };
    binary2char(input_file, message);
    fprintf(output_file, "%s", message);
    fclose(input_file);
    fclose(output_file);
    return 0;
}

你的二进制数字是8421BCD码格式的还是什么格式的呀,二进制数表示十进制数的方式有很多种。