2021.01.13 QA プログラム関連

bmp ファイルで h[54] と画像の点の対応は?

padding などのややこしいことを避けるために横のピクセル数(小さい点の数) n は 4 の倍数とする. この時 h[54+3*i], h[54+3*i+1], h[54+3*i+2] の 3 bytes が 左下から i 番目の点の色の値となる. ただし点の番号の付け方 i は, たとえば n=8 なら
....
.....
16 17 18 18 19 20 21 22
 8  9 10 11 12 13 14 15
 0  1  2  3  4  5  6  7
となる.

できた bmp ファイルが黒一色です

小さいサイズの場合, 拡大が不十分ということはないですか?

毎回同じ乱数が出てきます

srand 函数を用いて初期化を行う. rand 函数, srand 函数

unsigned char c に 0xff より大きい数を代入できますか?

unsinged char には 1 byte の数しか代入できません.
unsigned char c;
c = 0xfecd;
と代入しても下の2桁の 0xcd しか代入されません. たとえば次のプログラムを考えます.
#include 
int main() {
  unsigned char c;
  c = 0xfecd;
  printf("%x\n",c);
  return 0;
}
コンパイルで warning が出て, 実行すると
cd

と表示されます.

同じように sizeof(int) が 4 の場合, 0xffffffff より大きい数を int 型の変数に代入しようとすると, 同じように上の桁が捨てられます.