2010-03-21 323 views
-1

我想读取C++(Turbo)中的bmp文件。但我无法打印二进制流。阅读bmp文件的隐写术

我想编码txt文件并解密它。 我该如何做到这一点。我读了那个bmp文件头是54字节。但是如何以及在哪里应该在bmp文件中追加txt文件。 ?

我只知道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(); 

我无法看到控制台 这是工作的罚款二进制数据(c)

+4

到底在说什么?隐写术? – SLaks 2010-03-21 20:18:18

+0

@Slaks是的我在谈论隐写术 – 2010-03-21 20:20:29

+1

你的问题没有任何意义 - 你可能需要在试图编写任何代码之前再阅读一下隐写术。 – 2010-03-21 20:27:26

回答

1

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

+0

@Chris:我现在主要关心的是在控制台上打印二进制流。我可以在其上进行进一步的操作。如果你能帮忙。这将是伟大的 – 2010-03-21 20:27:55

+0

好的,那么你的实际问题应该是: 如何读取.bmp文件并显示字符为文本,最好是十六进制字符? – 2010-03-21 20:43:49

+0

我想打印在(0,1)的二进制输出, – 2010-03-21 20:51:43

1

您需要修改位模式,而不是将任何文本追加到文件中。 一个简单的例子: 阅读内容的位图(头之后),并从每个字节的牺牲一点牵你的内容

0

如果在Windows上,重新编码使用的CreateFile,看到真正的错误是什么。如果在Linux上,同上打开(2)。一旦你调试了这个问题,你可能会转移回iostreams。