【问题标题】:File in binary form二进制形式的文件
【发布时间】:2010-03-28 07:40:02
【问题描述】:

我想以二进制形式将数据写入文件。

我正在尝试使用下面提到的

FILE *fp = fopen("binaryoutput.rgb888", "ab+");

for(int m=0; m<height; m++)
{
   for (int n=0; n< width; n++)        
   {                            
    temp = (pOutputImg+m*3+n*3); // here pOutputImg & temp is a pointer to a unsigned char  
    fprintf(fp,"%u",*temp);             
   }        
}
fclose(fp);

我能够获取存储在 pOutputImg 但不是二进制形式的数据。

谁能指导我正确的步骤..

提前致谢

【问题讨论】:

  • 很难弄清楚意图。 temp 和 pOutputImg 的类型是什么?为什么将 m 和 n 都乘以 3?不应该将其中一个乘以另一个维度吗?
  • @Marcelo Cantos :这是为了获取 RGB888 的正确格式的数据。通过以二进制格式写入该文件将为我提供 RGB888 图像的正确格式..

标签: c file binary


【解决方案1】:

将 fprintf() 替换为 fwrite()。

例如:

fwrite(temp, sizeof(*temp), 1, fp);

fprintf() 的全部目的是将二进制数据格式化为可读的 ascii ... 与您想要的完全相反。 fwrite() 用于直接写入二进制数据。

【讨论】:

    【解决方案2】:

    如果这是一个 rgb 三元组的像素图,你可以用一行写二进制数据:

    fwrite(pOutputImg, 3, height * width, fp);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 2019-01-31
      • 1970-01-01
      • 2019-10-16
      • 2013-07-10
      • 2020-10-28
      相关资源
      最近更新 更多