У меня есть файл, который содержит данные для нескольких jpegs (вместе с мусором), мне нужно извлечь двоичный файл из этого файла, отфильтровать мусор и создать JPEG. Я знаю начальную двоичную последовательность JPEG.
char buffer[30];
ifstream fin;
fin.open ("FILENAME.raw", ios::in | ios::binary);
while (!fin.eof())
{
fin.read(buffer,30);
cout<<buffer[2]<<endl;
}
fin.close();
Здесь я пытаюсь распечатать файл в двоичном формате, но, когда я запускаю этот код, на экране выводятся чужие символы.
Я думаю, что проблема здесь была << buffer [2] «, который преобразовывал вашу двоичную информацию в charecters. Попробуйте int cast раньше, также вы должны использовать статический» массив без знака «, потому что двоичные данные могут быть без знака. Это будет работать:
unsigned char buffer[ 30 ];
ifstream fin;
fin.open ("FILENAME.raw", ios::in | ios::binary);
while (!fin.eof())
{
fin.read( (char*)( &buffer[0] ), 30 ) ;
cout << (int)buffer[2] << " ";
}
fin.close();
return 0;
Также, если вы хотите просмотреть двоичный файл, почему вы просто печатаете буфер [2].
Вы должны дважды проверить двоичное содержимое файла, так как ваш код выглядит идеально.