Вопрос

Я пытаюсь прочитать bmp-файл на C ++ (Turbo).Но я не могу распечатать двоичный поток.

Я хочу закодировать в него текстовый файл и расшифровать его.Как я могу это сделать?Я читал, что заголовок bmp-файла имеет размер 54 байта.Но как и куда я должен добавить текстовый файл в bmp-файл.?

Я знаю только Turbo C ++, поэтому для меня было бы полезно, если бы вы предоставили решение или предложение, связанное с темой для того же самого.

int main()
{
ifstream fr; //reads
ofstream fw; // wrrites to file
char c;
int random;
clrscr();
char file[2][100]={"s.bmp","s.txt"};

fr.open(file[0],ios::binary);//file name, mode of open, here input mode i.e. read only
if(!fr)
    cout<<"File can not be opened.";
fw.open(file[1],ios::app);//file will be appended
if(!fw)
    cout<<"File can not be opened";
while(!fr)
    cout<<fr.get(); // error should be here. but not able to find out what error is it

fr.close();
fw.close();
getch();
}

Этот код работает нормально, когда я передаю текстовый файл в двоичном режиме

Редактировать :

while(!fr)
    cout<<fr.get(); 

Я не могу видеть двоичные данные в консоли это нормально работало для текста, когда я передавал символьный параметр в fr.get(c)

Это было полезно?

Решение

Я думаю, что на ваш вопрос уже дан ответ:Выведите значение int в двоичном представлении с помощью C

преобразуйте ваш символ в int, и все готово (по крайней мере, для выходной части).

Другие советы

Со стеганографией, насколько я мало о ней знаю, вы не "добавляете" текст.Вы вносите незначительные изменения в пиксели (затенение и т.д.), Чтобы скрыть что-то, что визуально не очевидно, но должно иметь возможность обратного дешифрования путем изучения пикселей.Не должно иметь никакого отношения к заголовку.Так или иначе, смысл моего в противном случае бесполезного ответа состоит в том, чтобы побудить вас перейти и изучить тему, на которую вы ищете ответы, чтобы вы могли разработать свое решение, а затем прийти и спросить подробности о реализации.

Вам нужно изменить битовый шаблон, а не добавлять какой-либо текст к файлу.Один простой пример :Прочитайте растровое содержимое (после заголовка) и пожертвуйте битом из каждого байта, чтобы сохранить ваше содержимое

Если в Windows, перекодируйте, чтобы использовать CreateFile и посмотреть, в чем реальная ошибка.Если в Linux, то же самое для open(2).После того, как вы отладите проблему, вы, вероятно, сможете вернуться к iostreams.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top