我有一个字节数组的数据,应该是跨平台一致的。假设我有一个指针 ,unsigned char* data
它指向我的数组中的某个位置,我想将 4 个字节读入一个变量。我认为我可以这样做:
uint32_t my_int = *data;
但是,我意识到该方法不考虑字节顺序。例如,如果我的数据是大端的,我是否必须这样做才能一致地读取它?
uint32_t my_int = (data[0] << 3) + (data[1] << 2) + (data[2] << 1) + data[3];
同样,在使用 写入此数据时是否必须进行相同的检查fwrite
?例如,如果我使用以下代码将相同的数据写入文件:
fwrite(&my_int, sizeof(my_int), 1, fh);
结果数据是否有任何已知的字节顺序?或者它会依赖于架构?如果是这样,在所有平台上执行这些读取和写入并强制执行特定字节顺序的最简单方法是什么?