gpt4 book ai didi

c - 在 C 中存储颜色的整数,取决于字节序

转载 作者:行者123 更新时间:2023-11-30 14:24:58 26 4
gpt4 key购买 nike

我有一个关于字节顺序的问题,我喜欢以 HTML 格式存储我的颜色(RGB 像 #aabbcc)。

我总是在代码中使用 0xaabbcc 来存储颜色,然后提取红色、绿色和蓝色,我应用如下蒙版:

int color = 0xaabbcc;
int r = color & 0xff0000;
int g = color & 0x00ff00;
int b = color & 0x0000ff;

这个效果很好,但是我没有在大端机器下测试过,结果会一样吗?

我必须看到 SDL 检查创建表面的字节序,如 man SDL_CreateRGBSurface 的示例所示:

#if SDL_BYTEORDER == SDL_BIG_ENDIAN
rmask = 0xff000000;
gmask = 0x00ff0000;
bmask = 0x0000ff00;
amask = 0x000000ff;
#else
rmask = 0x000000ff;
gmask = 0x0000ff00;
bmask = 0x00ff0000;
amask = 0xff000000;
#endif

surface = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32,
rmask, gmask, bmask, amask);

最佳答案

是的。位掩码与字节顺序无关。字节序会成为问题的唯一地方是,如果您将其转换为字节数组(或者,在 c 中,char *),在这种情况下,字节序就很重要。

在使用此代码之前还要确保 sizeof(int) > 3!

关于c - 在 C 中存储颜色的整数,取决于字节序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10902430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com