2010-03-28 4 views
1

Я хочу записать данные в файл в двоичной форме.Файл в двоичной форме

Я пытался с помощью указанных ниже

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); 

Я могу получить данные, которые strored в pOutputImg, но не в двоичной форме.

Может кто-нибудь руководство мне правильный шаг ..

Заранее спасибо

+0

очень трудно выяснить намерения. Каковы типы temp и pOutputImg? Почему вы умножаете как m, так и n на 3? Разве один из них не должен быть умножен на измерение другого? –

+0

@Marcelo Cantos: Это для получения данных в правильном формате для RGB888 .. путем записи этого файла в двоичном формате даст мне правильный формат для изображения RGB888. – Abhineet

ответ

7

Заменить fprintf() с FWRITE().

Ex:

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

Вся цель fprintf() является формат двоичных данных в виде читаемом ASCII ... полная противоположность того, что вы хотите. fwrite() предназначен для непосредственного написания двоичных данных.

+0

@dkantowitz: Он работает! благодаря – Abhineet

2

Если это пиксельная из RgB троек, вы можете записать двоичные данные с одной строкой:

fwrite(pOutputImg, 3, height * width, fp); 
Смежные вопросы