输入(input.txt)
二进制数字
输出(output.txt)
对应文字列
例如
输入
010010000110010101101100011011000110111100100000010101110110111101110010011011000110010000100001
输出
Hello World!
希望参照以下代码
供参考:
#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码格式的还是什么格式的呀,二进制数表示十进制数的方式有很多种。