• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:bitmapをcharで読み込みました。)

bitmapをcharで読み込んだ結果、何が起こっているか?

このQ&Aのポイント
  • bitmapのデータをcharで読み込むと文字化けします。
  • ピクセルデータは55番目の数値から始まり、0が終了マークとされています。
  • 最後の0以外は、三つ単位のRGBの順で表示されています。しかし、255 255 255のように表示されない理由は不明です。

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

char型は、環境(コンパイラ)によって、 unsigned(符号無し) charである場合と、 signed(符号付き) charである場合があります。 これはsigned charなのでしょう。 signed charでは、正の数は0~127しか表せず、 128~255は表せません。 それらの数を読み込むと、マイナスの数になってしまいます。 255が-1に対応します。 だから-1 -1 -1は、 もとのデータでは255 255 255の意味だったのでしょう。 解決法は、 charの配列を、 unsigned charとして宣言し直すことです。 なお、printfで出力する際、%dを使っているのだと想像しますが、 ここも%u(符号無し出力)に変えた方がいいでしょう。 BMPのフォーマットは、公表されているのかいないのか よくわからないのですが、 独自解析で調べた方が何人かいらっしゃるようです。 個人のHPなので直接リンクは控えますが Googleで「BMP Windows フォーマット」で探すと、 いくつか出てきます。 最後にある0は、おそらく意味が無く、 4バイト単位にするための詰め物のようです。

参考URL:
http://www.google.co.jp/
thulala
質問者

お礼

ありがとうございました。 意味がわかりました。

関連するQ&A