0

ピクセルの色を読み込んで、1 バイトの変数を書き込みます。この色 (赤いピクセルの場合) を読み取ると、結果は 255 になりますが、値は 4294967296 です。このことから、値が 32 バイト変数に記録されていることがわかります。なぜこれが起こるのですか?

struct RGBpix{
 char R;
 char G;
 char B;
}typedef RGB;

...

RGB **data=(RGB **)malloc(sizeof(RGB *)*Picture.biWidth);
    for(i = 0; i < Picture.biWidth; i++){
        data[i] = (RGB*) malloc(sizeof(RGB) *Picture.biHeight);
    }

...

for(i=0;i<Picture.biWidth;i++){
        for(j=0;j<Picture.biHeight;j++){

        fread(&data[i][j].R, 1, 1,bmpFile);
        fread(&data[i][j].G, 1, 1,bmpFile);
        fread(&data[i][j].B, 1, 1,bmpFile);
        }

    }
    printf("%Ld", data[0][1].R);
4

1 に答える 1

0

charあなたのマシンでは署名されたタイプのようです。unsigned char符号拡張を避けるために使用します。

于 2013-05-08T18:22:59.927 に答える