现在的位置: 首页 > 综合 > 正文

c++ 文件操作二进制模式的读写问题

2013年06月01日 ⁄ 综合 ⁄ 共 411字 ⁄ 字号 评论关闭

我这儿说得是写入与读出时,字节的次序问题。

比如说 int num=10000;

其十六进制应为:

00 00 27 10

但使用ofstream写入到文件的结果却是:

10 27 00 00

 

字节次序相反。

 

如果把这个结果读出,仍然能够正确得出10,000。也就是说,如果一个数据是自己写入,自己读出,没有问题

我以前都这样,或者别人的数据也是使用这种方式写入的。

 

但是这次,我碰到了问题,在分析文件后发现,这文件中的二进制是能直接转换为对应十进制的,也就是说,数据是10,000

,文件中的十六进制是00 00 27 10

这样使用ofsteam直接读出的数据就是270,991,360,二进制就是10 27 00 00

 

也就是说这个次序要注意

这个问题应该跟计算机硬件有关,Intel机与某些的非Intel机的字节读写次序不同

而我使用的那个数据库就不是Intel下产生的

 

在这儿提醒一下,操作二进制文件前,如果有读写非字节类型数据的,最好先看一下文件的数据字节序

抱歉!评论已关闭.