-2

假设我有 2 个变量:

int var1 = 1; //1 byte
int var2 = 2; //1 byte

我想将这些组合并编码为 32 位无符号整数(uint32_t)。通过组合它们,它将是 2 个字节。然后我会用 2 个字节的 0 填充填充剩余空间。这是写入文件,因此需要这种特定类型的编码。

所以通过结合上面的示例变量,我需要的输出是:

1200 //4 bytes
4

1 回答 1

2

没有必要采取迂回的方式将值“组合”到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()读取两个值,当然还要检查失败。您也应该检查这些写入,因为错误处理,我省略了它。

于 2017-04-05T10:00:43.280 回答