C++ 二进制文件读取float型数值异常

C++中实现读取一个二进制文件。原始文件中存储的是float型数据,占4个字节。程序运行过程中采用float型 直接读取,则每次默认读取8个字节,导致出现异常。尝试采用int型做为中间“容器”可以正常读取。以下为代码片段及输出结果。

...
	//* 未能正确解析部分***//
	float* ff = new float[12];
	int fsize = sizeof(float);
	inFile.read((char*)ff, sizeof(float) * 12);
	std::cout << ff[0] << std::endl;
	std::cout << ff[1] << std::endl;
	std::cout << ff[2] << std::endl;
	//* 未能正确解析部分***//

	//* 正确解析部分***//
	float x;
	int i = 0;
	stream >> i;
	x = (float&)i;
	std::cout << x << std::endl;
	//* 正确解析部分***//
...
	异常部分输出信息
	std::cout << ff[0] << std::endl;--->3.16438e+28
	std::cout << ff[1] << std::endl;--->1.29613e+32
	std::cout << ff[2] << std::endl;--->-7.69218e-35
	正常部分输出信息
		std::cout << x << std::endl;--->1.04366e+06

猜你喜欢

转载自blog.csdn.net/huapenguag/article/details/108142427
今日推荐