看板 C_and_CPP 關於我們 聯絡資訊
我想要讀入一個jpeg檔的binary data,為了確保我的確是讀對了 我寫了以下的code,但不幸的是buffer 因為是char type ,cout 出來的東西會是一堆亂碼。這樣我無法去跟我用Ultra Edit開啟此檔 的原始碼做比對。請問該如何寫? #include <iostream> #include <iomanip> #include <fstream> using namespace std; int main() { ifstream JPobj("monalisa.jpg"); char buffer= 0 ; int i =0; while (i < 32) { JPobj.read(&(buffer), 1); i++; cout<<hex<<buffer; } system("pause"); return 0; } 最後自行的解決方法,雖然並不是我想要的 #include <iostream> #include <iomanip> #include <fstream> using namespace std; int main() { ifstream JPobj("monalisa.jpg"); bool* buffer= new bool[8] ; int i =0; while (i < 32) { JPobj.read((char*)buffer, 1); i++; cout<<hex<<*buffer<<" "; } system("pause"); return 0; } sun大的建議我是有試過但卻沒印出東西 jame大的方法也會印出一些多餘的東西 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.132.180 ※ 編輯: rockwalking 來自: 114.43.132.180 (06/01 00:43)
james732:cout << hex << (int)buffer; 這樣? 06/01 00:45
rockwalking:樓上似乎不行 轉(int)會多出垃圾 06/01 00:48
sunneo:那就unsigned char啊 或者弄個int assign後再印 06/01 00:50
sunneo:你怎會如此篤定印出來的東西是垃圾呢 06/01 00:51
rockwalking:樓上我試試看 06/01 00:52
sunneo:覺得問題出在buf是text type,早該在開檔的時候用bin mode 06/01 00:53
rockwalking:轉int 之後有些是對的 但會多出很多東西 06/01 00:55
rockwalking:unsigned char 會在JPobj.read(&(buffer), 1); error 06/01 00:56
rockwalking:我一直知道問題是buffer的type 但問題該怎樣改 06/01 00:56
sunneo:你已經知道問題在於buf是char type,何不開檔時使用bin mode 06/01 00:57
james732:printf("%2X", buffer); 06/01 00:59
rockwalking:謝謝 06/01 01:05
※ 編輯: rockwalking 來自: 114.43.132.180 (06/01 01:13) ※ 編輯: rockwalking 來自: 114.43.132.180 (06/01 01:16)