ビット演算>ビットマップ画像構築

まずは、下図のようなテキストが与えられたときに、それを数値に変換する関数を書こう。

"00000000"
"01000000"
"01000000"
"01000000"
"01111100"
"01000010"
"01000010"
"01111100"

画像サイズは 8×8 固定とする。なので、数値は64ビットとなるので、型は unsigned __int64 とする。
これは表記が長いので、typedef unsigned __int64 uint64; と型定義しておく。

uint64 binToUInt64(const char *ptr)
{
    uint64 val = 0;
    while( *ptr != '\0' ) {
        switch( *ptr++ ) {
            case '0':
                val *= 2;
                break;
            case '1':
                val = val * 2 + 1;
                break;
        }
    }
    return val;
}

 演習問題:

  1. 上記コードをビルド・実行し、正しく数値に変換されることを確認しなさい
  2. “a” の文字の8×8ピクセル画像を作り、それを数値に変換しなさい。