在C中编写二进制文件

时间:2014-04-12 22:11:20

标签: c file binary

我正在尝试将值0000 0100(十进制为4)写入C中的二进制文件。这是我的代码:

FILE *fp = fopen("D:\\test.COM", "wb");
if (fp == NULL) {
    printf("error creating file");
    return -1;
}
int val = 100;  // value 4
fwrite(&val, sizeof val, 1, fp);
fclose(fp);
return 0;

有人可以纠正我吗?我不想将4分配给val,我想在代码中编写实际的二进制文件。

谢谢,

2 个答案:

答案 0 :(得分:0)

如果您希望文件实际具有位0000 0010,那么您需要一个8位的int,即C中的char

char val = (char) 4;  // value 4
fwrite(&val, sizeof val, 1, fp);

更新:根据评论,看起来OP正在询问如何转换格式为" 00000010"的二进制字符串。进入位表示。是的,有一种方法,但它需要你做掩蔽。以下内容可以帮助您入门。

char* input = "00000010";
char output = 0;
for (int i = 0; i < 8; i++)
    if (input[i] == '1')
       output |= (1 << (7-i)); // Set the appropriate sit of `output` to 1.

然后您可以在我的答案的第一部分中使用fwrite

由于BLUEPIXY没有写出他自己的答案,我将他的评论纳入这个答案的完整性。虽然我认为上面的循环对于初学者来说是有益的,但使用他提到的库函数要快得多。

char val=strtol("00000100", NULL, 2);

答案 1 :(得分:0)

您是否尝试以二进制文件指定它?

int val = 0b100; //值4