0

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