C 从位图中读取颜色

标签 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);

最佳答案

char 在您的计算机上似乎是有符号类型。使用 unsigned char 以避免符号扩展。

关于C 从位图中读取颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16447481/

相关文章:

c - 需要 : open source C/C++ regular expression library that does unicode

c - 找到将 N 减少到零的最小步数

c - 打印带重复的排序排列

css - Internet Explorer 10 - CSS3 转换不工作

c - 为什么编译器显示 "Call to function with no prototype"?

c++ - 灰度图像到单色度?

java - 了解 BufferedImage.getRGB 输出值

r - 如何在绘图中使用自定义点样式?

c# - 通过 tcp 发送图像时 UI 卡住

android - 截图