首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

晕啊二进制浮点数的读取!解决方法

2012-02-16 
晕啊,二进制浮点数的读取!!!我有一个二进制文件,一个浮点数以二进制方式存于其中,占用4个字节(所就是所谓

晕啊,二进制浮点数的读取!!!
我有一个二进制文件,一个浮点数以二进制方式存于其中,占用4个字节(所就是所谓的两个“半字”),用如下方法读取不正确,哪位高手指点一下,谢谢!
   
      ..........
      ifstream   f( "aaa.dat ",ios:binary);
      float   a;
      f.read((char   *)&a,sizeof(float));
      ShowMessage(a);   //结果不对,好郁闷!
      .................


[解决办法]
这个代码好像是整形数存储顺序的交换.我记得以前在工作站上和微机的二进制数据存储顺序就是相反的,当时作了一的交换顺序的代码
void Swap(int *p,int Num)
{
unsigned char *cTmp;
unsigned OneByte;
cTmp = (unsigned char *)p
for(int i=0;i <Num;i++)
{
OneByte = cTmp[i*4];
cTmp[i*4]= cTmp[i*4+3];
cTmp[i*4+3] = OneByte;
OneByte = cTmp[i*4+1];
cTmp[i*4+1]= cTmp[i*4+2];
cTmp[i*4+2] = OneByte;

}
}

这个代码将整形变量改为float就可以实现浮点数顺序的交换,看能否满足你的要求。

热点排行