假设我有 2 个变量:
int var1 = 1; //1 byte
int var2 = 2; //1 byte
我想将这些组合并编码为 32 位无符号整数(uint32_t)。通过组合它们,它将是 2 个字节。然后我会用 2 个字节的 0 填充填充剩余空间。这是写入文件,因此需要这种特定类型的编码。
所以通过结合上面的示例变量,我需要的输出是:
1200 //4 bytes
没有必要采取迂回的方式将值“组合”到uint32_t
. 二进制文件是字节流,所以写单个字节是很有可能的:
FILE * const out = fopen("myfile.bin", "wb");
const int val1 = 1;
const int val2 = 2;
if(out != NULL)
{
fputc(val1, out);
fputc(val2, out);
// Pad the file to four bytes, as originally requested. Not needed, though.
fputc(0, out);
fputc(0, out);
fclose(out);
}
这用于fputc()
将单个字节写入文件。它需要一个整数参数来写入值,但将其视为unsigned char
内部,本质上是“一个字节”。
回读同样简单,例如使用fgetc()
读取两个值,当然还要检查失败。您也应该检查这些写入,因为错误处理,我省略了它。