我正在尝试将值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,我想在代码中编写实际的二进制文件。
谢谢,
答案 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