在 C 二进制文件中将 int 编码并组合为 32 位 int

Encode and combine int to 32bit int in C binary file

假设我有 2 个变量:

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

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

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

1200 //4 bytes

无需迂回地将 "combining" 值转换为 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,本质上是 "a byte".

回读也很简单,例如使用fgetc() 读出两个值,当然还要检查是否失败。你也应该检查这些写入,我省略了它,因为错误处理。