晕啊,二进制浮点数的读取!!!
我有一个二进制文件,一个浮点数以二进制方式存于其中,占用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就可以实现浮点数顺序的交换,看能否满足你的要求。