C从位图读取颜色

时间:2013-05-08 18:15:38

标签: c colors bitmap

我正在加载像素的颜色并写入一个字节的变量。当我想读取这种颜色(对于红色像素)时应得到结果: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);

1 个答案:

答案 0 :(得分:0)

char似乎是您计算机上的签名类型。使用unsigned char来避免签名扩展。