代码之家  ›  专栏  ›  技术社区  ›  Abhineet

二进制文件

  •  1
  • Abhineet  · 技术社区  · 15 年前

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

    我试着用下面提到的

    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中被调用的数据,但不能以二进制形式。

    有人能给我指一下正确的步骤吗。

    提前谢谢

    2 回复  |  直到 15 年前
        1
  •  7
  •   dkantowitz    15 年前

    将fprintf()替换为fwrite()。

    前任:

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

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

        2
  •  2
  •   Marcelo Cantos    15 年前

    如果这是rgb三元组的pixmap,可以用一行写二进制数据:

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