ファイルを開いてそのファイルの内容をASCII文字で表示したいです。
ファイルは画像ファイルです。
画像ファイルのフォーマット形式はバイナリとASCIIの2種類あり、画像ファイルの種類は6種類に分かれています。
ASCII文字では表示した際、はじめの2文字で画像ファイルの種類の判別ができるので、その判別が目的です。
表示は、アスキー文字で表示できるAZ,az,0~9は表示し、それ以外の表示できない文字は"・"で表示したいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
過去の質問画像ライブラリの作成(PNM)より、対象ファイルはPNM (画像フォーマット)と想定して回答します。
先頭2バイトのマジックナンバーを見ればASCIIかバイナリかは分かるので、ASCII形式ならそのまま表示、バイナリ形式なら一般的なダンプ(16進)表示でよいかと思います。
編集された質問に対しての回答
疑似コードですが、以下のような処理で、目的の動作はできるかと思います。
C++
1ファイルをバイナリで開く 2while( ファイル終端まで){ 3 c = 1byte読み込む 4 if( c が ASCIIのA~Z, a~z, 0~9の範囲){ 5 cを文字(char)として表示。 6 } 7 else{ 8 "・"を表示。 9 } 10}
投稿2017/07/04 09:37
編集2017/07/04 09:54総合スコア38233
0
ファイルを1バイトずつ読み出すとして、1バイトは10進数で0~255の範囲の数字になります。この内、通常、画面に表示できるのは0~9, 記号, A~Z, a~zでその他のデータをそのまま表示すると(例えばprintf関数などで)画面には何も表示されないか、文字化けした文字が表示されたりします。CR(0x0D)やLF(0x0A)などはカーソル位置が変化したりします。
こういう、画面に直接表示できないデータはどうするのでしょうか?
表示できるものだけ選別して表示するのでしょうか?
ファイルの何を表示したいのかがはっきりしないので、これ以上は回答しづらいですね。
投稿2017/07/04 09:02
総合スコア3579
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ASCII文字からなるファイルを読み込めば、そのままASCIIのデータが得られます。
そのデータをそのまま出力すればいいです。
しかし、16進数が登場するなど、質問文がおかしいような気もします。あなたがASCII文字、ASCIIコードについて誤解している可能性があります。
投稿2017/07/04 08:37
総合スコア84421
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/04 08:39
2017/07/04 08:41
2017/07/04 08:43
2017/07/04 08:45
2017/07/04 08:49
2017/07/04 08:54
2017/07/04 09:00
2017/07/04 09:23 編集
2017/07/04 11:33
2017/07/04 12:25
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/04 09:56
2017/07/04 09:58
2017/07/04 10:01
2017/07/04 10:06 編集
2017/07/04 10:29
2017/07/04 12:17
2017/07/04 12:34