我正在尝试用C ++(Turbo)读取bmp文件。但我无法打印二进制流。
我想将txt文件编码到其中并解密。 我怎样才能做到这一点。我读到bmp文件头是54字节。但是我应该如何以及在哪里将txt文件附加到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();
}
当我以二进制模式传递txt文件时,此代码运行正常
编辑:
while(!fr)
cout<<fr.get();
我无法在控制台中看到二进制数据 当我在fr.get(c)
中传递字符参数时,这对文本工作正常答案 0 :(得分:1)
使用隐写术,我对它知之甚少,你不是“附加”文本。你正在对像素(阴影等)进行细微的修改,以隐藏视觉上不明显的东西,但应该能够通过检查像素进行反向解密。不应该与标题有任何关系。 所以,无论如何,我的其他无用答案的一点是鼓励你去了解你寻求答案的主题,以便你可以设计你的解决方案,然后来询问有关实施的具体细节。
答案 1 :(得分:1)
您需要修改位模式,而不是在文件中附加任何文本。 一个简单的例子: 读取位图内容(在标题之后),并从每个字节中牺牲一点来保存您的内容
答案 2 :(得分:1)
我认为您的问题已经回答: Print an int in binary representation using C
将您的char转换为int并完成(至少对于输出部分)
答案 3 :(得分:0)
如果在Windows上,重新编码以使用CreateFile并查看真正的错误。如果在Linux上,同样为open(2)。调试完问题后,您可能会转回iostreams。