超初心者です C++で画像ファイルなどをバイナリエディタで見えるような
16進数(FF02みたいな…)で処理したいのですが…まったく意味がわかんねー

unsigned char ch1;
//char *ss;

ifstream fin(argv[1], ios::in | ios::binary);
while(!fin.eof()){
fin >> ch1;
printf("%X",ch1);
}

例えばこれなら、一文字ずつ処理して「FF03FA…」みたいに画面に
表示されるんですけど、これを「ss」に代入しようとして、
sprintf(ss,"%X",ch1);
とするとわけわからんようになってしまいます。なんか根本的に間違っているような気が
するんですが、どなかたか解決策をやさしく教えてくださいませんでしょうか?