我想int32_t以大端顺序将 an 的 4 个字节写入二进制文件。我fwrite()直接使用指向 my 的指针int32_t,它有些工作,但问题是我的整数是按小端顺序写入的,首先写入最小的字节。例如,如果我写:
int32_t specialInt = 262;
fwrite(&specialInt, 4, 1, myFile);
Run Code Online (Sandbox Code Playgroud)
我用十六进制编辑器打开它,我看到:
06 01 00 00 ...
Run Code Online (Sandbox Code Playgroud)
这与我想要的方式相比是倒退的。我想:
00 00 01 06 ...
Run Code Online (Sandbox Code Playgroud)
我应该如何让我的int_32t顺序处于大端顺序?是否有一个内置的 C 库函数可以按正确的顺序获取字节,或者我应该使用将memcpy()字节放入临时字符数组中,然后将字节一一向后写入文件中?
感谢 pmg 在评论中写下答案:
假设CHAR_BIT == 8:
unsigned char value[4];
value[0] = (uint32_t)specialInt >> 24;
value[1] = (uint32_t)specialInt >> 16;
value[2] = (uint32_t)specialInt >> 8;
value[3] = (uint32_t)specialInt;
fwrite(value, 4, 1, myFile);
Run Code Online (Sandbox Code Playgroud)