将浮点缓冲区写入二进制文件

时间:2017-01-06 13:17:01

标签: c++ file ppm

  • 我有一个带有ppm文件数据的浮点缓冲区。缓冲区[0] [0]是第一个元素,缓冲区[3 * width * height] [0]是数据的最后一个元素。
  • 缓冲区包含这样的元素。 1st = 117 2st = 135 3st = 122.它是红色,绿色和蓝色。
  • 重点是将此数据写入二进制文件!

我试试这个,getHeight()返回Height,getWidth()返回数据的宽度。

ofstream output(filename, ios::out | ios::binary);  
output.write((char *)buffer, img.getHeight() * img.getWidth() * 3);

我也试试这个,因为i = 0到i = 3 *身高*宽度

fp = fopen(filename, "wb");
fwrite(reinterpret_cast<char*>(&buffer[i][0]), 1, 3*height*width, fp);

2 个答案:

答案 0 :(得分:0)

浮点数各为4个字节。 fwrite()不知道你正在写的类型,所以对于大小,你还需要乘以每个元素的大小。

fwrite(reinterpret_cast<char*>(&buffer[i][0]), 1, 3*height*width * sizeof(float), fp);

答案 1 :(得分:-1)

#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

int main() {
     ofstream out("blah.txt");
     float val = 10.0f;

     out << fixed << setprecision(5) << val << endl;
     out.close();
     return 0;
}