こんばんは。
バイナリデータの表示についてお聞きしたい事があります。
CRichEditCtrlとCEditにバイナリデータを表示したいのですが、
表示する事は可能でしょうか?
現状では、文字が途中で切れて表示されているのですが・・・。
基本的な事なのかも知れませんが、初心者な者でお許し下さい。
ご存知の方おられましたら宜しくお願い致します。
バイナリデータは表示できません。
DOS時代は、コントロールコード(00H~1FH)を表示すると改行したり、
ブザーが鳴ったりしていました。
確認したいのであれば、ダンプリストのように2桁で表示するしかないと思います。
アイススケーターさん、回答ありがとうございます。
やっぱり、無理なんですね・・・。
実際にやりたかった事は、受信したデータ(バイナリデータ)を画面
上に表示(その際、CEditやCRichEditCtrlを使用)し、表示したデ
ータを保存することでした。
上記のような事をする為には、どのような方法があるでしょうか?
何方か良い知恵をお貸しください。
それでは、宜しくお願い致します。
どう表示したいかによります。
というより、
『CEditやCRichEditCtrlに表示する』
ということは『文字列に変換する』ということを内包しています。
どうにかして文字列にして、それを表示なり何なりしてやってください。
PAIさん、回答ありがとうございます。
>どう表示したいかによります。
バイナリエディタ(狐'sバイナリエディタ(フリーアプリ)
等)のような感じで表示したかったんですが・・・。
>どうにかして文字列にして、それを表示なり何なりしてやってください。
ということは、1文字1文字、文字変換していく方法しかないですよね。
なんとなく作ってみました。
コンパイルも動作確認もしてないので雰囲気だけ味わってください。
CString s_dsp, s_dsp1, s_dsp2 ;
char data[100] = abcdef\r\nghijh ;
CString s_tmp ;
for( int i=0; data[i] != '\0'; i++ )
{
// バイナリ表示分を処理
s_tmp.Format(%02X, data[i] );
s_dsp1 += s_tmp ;
// アスキー表示分を処理
if( data[i] > 0x20 && data[i] < 0x7f )
{
// そのまま表示する文字
s_dsp2 += data[i] ;
}
else
{
// そのままでは表示すると化けたりするので省略表示
s_dsp2 += ? ;
}
// 一行あたり16バイトで処理してみる
if( i%16 == 15 )
{
s_dsp += s_dsp1 + + s_dsp2 + \n ;
}
}
// 表示用処理されてない分を処理
s_dsp += s_dsp1 + + s_dsp2 + \n ;
// なんでもよいから表示
AfxMessageBox(s_dsp);
んさん、回答ありがとうございます。
んさんのサンプルを参考にして、バイナリデータの表示(文字変換して)
を行う事が出来ました。
今回は本当にありがとうございました。
また、お聞きする事があると思いますが、その時は宜しくお願い致します。