作者Uihc (我 有我的倔强...)
站内Programming
标题[问题] (vc)用4bytes存浮点数并写入二进位档
时间Mon Nov 12 10:42:00 2007
请教各位前辈,现我想自己新增一个*.lan档,这是一种影像格式
首先要先写档头,它的档头固定是128byte
参考资料:
http://lab.geog.ntu.edu.tw/course/vb/Filehead.htm
现在我想写入最後4个资料,MapX、MapY、CellX、CellY
但写入的时候,每1个资料都要占4个byte,於是,我写了下面的程式码
会出现 "
读取位置 0xe9a90d38 时发生存取违规"
请问我应该怎麽做才能使浮点数写入档案时,是占4个byte?? 谢谢
=============================程式码片段================================
//开档
ofstream outf;
outf.open("new.lan",ios::binary);
:(略)
char ch[4];
sprintf(ch,"%f",MapX);
//内容是194030.218750
outf.write(ch,sizeof(ch));
sprintf(ch,"%f",MapY);
//内容是2655145.250000
outf.write(ch,sizeof(ch));
sprintf(ch,"%f",lanheader.Cell_X)
//内容是8.000033
outf.write(ch,sizeof(ch));
sprintf(ch,"%f",lanheader.Cell_Y);
//内容是8.000033
outf.write(ch,sizeof(ch));
outf.close();
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.64.235
1F:推 FlyinDeath:都开binary了为什麽还用sprintf? 61.231.195.119 11/14 01:40