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