我有一个关于字节顺序的问题,我喜欢以 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);