读取bmp文件进行隐写术

时间:2010-03-21 20:14:06

标签: c++ turbo-c++

我正在尝试用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)

中传递字符参数时,这对文本工作正常

4 个答案:

答案 0 :(得分:1)

使用隐写术,我对它知之甚少,你不是“附加”文本。你正在对像素(阴影等)进行细微的修改,以隐藏视觉上不明显的东西,但应该能够通过检查像素进行反向解密。不应该与标题有任何关系。 所以,无论如何,我的其他无用答案的一点是鼓励你去了解你寻求答案的主题,以便你可以设计你的解决方案,然后来询问有关实施的具体细节。

答案 1 :(得分:1)

您需要修改位模式,而不是在文件中附加任何文本。 一个简单的例子: 读取位图内容(在标题之后),并从每个字节中牺牲一点来保存您的内容

答案 2 :(得分:1)

我认为您的问题已经回答: Print an int in binary representation using C

将您的char转换为int并完成(至少对于输出部分)

答案 3 :(得分:0)

如果在Windows上,重新编码以使用CreateFile并查看真正的错误。如果在Linux上,同样为open(2)。调试完问题后,您可能会转回iostreams。