我的int型变量inst十进制是270400,就是十六进制的00042040,然后我用以下代码把它写入文件中
fout.write((char *)(&inst), sizeof(inst));
用sublime打开文件后,输出之后不是预期的00042040,而是40200400。。。感觉是大小端的问题,这怎么解决?
你先格式成字符串,写入的时以字符串写入试试;
270400内存中确实是存成40200400的(我们的PC一般都是小端的)
可以通过位移运算实现转换然后再存储
uint32_t reversebytes_uint32t(uint32_t value){
return (value & 0x000000FFU) << 24 | (value & 0x0000FF00U) << 8 |
(value & 0x00FF0000U) >> 8 | (value & 0xFF000000U) >> 24;
}