用C编写二进制文件



我正试图将值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;

有人能纠正我吗?我不想给val赋值4,我想在代码中写实际的二进制。

谢谢,

如果您希望文件实际具有位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

由于布鲁比西没有写自己的答案,为了完整起见,我将他的评论纳入这个答案中。虽然我认为上面的循环对初学者很有指导意义,但使用他提到的库函数要快得多。

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

您正试图以二进制形式指定它?

int val=0b100;//值4

相关内容

  • 没有找到相关文章

最新更新