[問題] 如何cout出char裡面的內容以16進位表示
我想要讀入一個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)
→
06/01 00:45, , 1F
06/01 00:45, 1F
→
06/01 00:48, , 2F
06/01 00:48, 2F
→
06/01 00:50, , 3F
06/01 00:50, 3F
→
06/01 00:51, , 4F
06/01 00:51, 4F
→
06/01 00:52, , 5F
06/01 00:52, 5F
→
06/01 00:53, , 6F
06/01 00:53, 6F
→
06/01 00:55, , 7F
06/01 00:55, 7F
→
06/01 00:56, , 8F
06/01 00:56, 8F
→
06/01 00:56, , 9F
06/01 00:56, 9F
→
06/01 00:57, , 10F
06/01 00:57, 10F
→
06/01 00:58, , 11F
06/01 00:58, 11F
→
06/01 00:59, , 12F
06/01 00:59, 12F
→
06/01 00:59, , 13F
06/01 00:59, 13F
→
06/01 01:05, , 14F
06/01 01:05, 14F
※ 編輯: rockwalking 來自: 114.43.132.180 (06/01 01:13)
※ 編輯: rockwalking 來自: 114.43.132.180 (06/01 01:16)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):