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

write a float buffer to a binary file

本文关键字:二进制文件 缓冲区      更新时间:2023-10-16
  • 我有一个带有 ppm 文件数据的浮点缓冲区。缓冲区[0][0]是第一个元素,缓冲区[3*宽度*高度][0]是数据的最后一个元素。
  • 缓冲区有这样的元素。 第一个 = 117 第二个 = 135 第三个 = 122。它是红色,绿色和蓝色。
  • 关键是将这些数据写入二进制文件!

我试试这个,getHeight() 返回高度和 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);

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

fwrite(reinterpret_cast<char*>(&buffer[i][0]), 1, 3*height*width * sizeof(float), fp);
#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;
}