2 sinat 31601333 sinat_31601333 于 2016.04.23 18:16 提问

C++写int型变量到二进制文件中

我的int型变量inst十进制是270400,就是十六进制的00042040,然后我用以下代码把它写入文件中
fout.write((char *)(&inst), sizeof(inst));

用sublime打开文件后,输出之后不是预期的00042040,而是40200400。。。感觉是大小端的问题,这怎么解决?

2个回答

q610098308
q610098308   2016.04.23 18:28

你先格式成字符串,写入的时以字符串写入试试;

qq423399099
qq423399099   Ds   Rxr 2016.04.23 18:56

270400内存中确实是存成40200400的(我们的PC一般都是小端的)
可以通过位移运算实现转换然后再存储

 uint32_t reversebytes_uint32t(uint32_t value){  
    return (value & 0x000000FFU) << 24 | (value & 0x0000FF00U) << 8 |   
        (value & 0x00FF0000U) >> 8 | (value & 0xFF000000U) >> 24;   
}  
qq423399099
qq423399099 回复Mokoa:怎么转出去的 再怎么转换回来。。。
一年多之前 回复
sinat_31601333
sinat_31601333 如果我想从一个二进制文件中,一次性读进来4个字节,应该怎么办呢?
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!