-1

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

4 回答 4

1

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

于 2010-03-21T20:25:05.353 回答
1

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

于 2010-03-21T20:25:51.713 回答
1

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

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

于 2010-03-21T20:49:03.273 回答
0

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

于 2010-03-21T20:26:31.187 回答