c++ - 如何在 C++ 中将 RGB 颜色值转换为十六进制值?

标签 c++ hex rgb

在我的 C++ 应用程序中,我有 png 图像的红色、绿色、蓝色值颜色。我将这些值存储在三个整数中。

如何将RGB值转换成等值的十六进制值?

例如这种格式的 0x1906

编辑:我会将格式保存为 GLuint。

最佳答案

将每种颜色的适当位存储为至少 24 位的无符号整数(如 long):

unsigned long createRGB(int r, int g, int b)
{   
    return ((r & 0xff) << 16) + ((g & 0xff) << 8) + (b & 0xff);
}

现在代替:

unsigned long rgb = 0xFA09CA;

你可以这样做:

unsigned long rgb = createRGB(0xFA, 0x09, 0xCA);

请注意,上面不会处理 alpha channel 。如果您还需要编码 alpha (RGBA),那么您需要这样:

unsigned long createRGBA(int r, int g, int b, int a)
{   
    return ((r & 0xff) << 24) + ((g & 0xff) << 16) + ((b & 0xff) << 8)
           + (a & 0xff);
}

如果您需要,请将 unsigned long 替换为 GLuint

关于c++ - 如何在 C++ 中将 RGB 颜色值转换为十六进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14375156/

相关文章:

c++ - 在自定义形状后剪辑自定义 qml 项目的子项

c++ - 构造函数的编译器优化

c++ - 旋转对象以指向鼠标位置

python - 在Python中对RGB值进行分类

Java 机器人类 - 在绘制后获取像素颜色

c++ - 模型 View 困难

c++ - std::cout 的十六进制 0x00

c - 分离数据并存储在数组中

c++ - linux将字符串值作为十六进制写入串行

excel - 将单元格的背景颜色设置为单元格中数据的 RGB 值