2010-03-21 324 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。