将双rgba颜色值转换为十六进制字符

时间:2013-11-19 19:10:55

标签: c++ colors rgb hex rgba

我有一组带有rgba颜色值的双打。像这样:

double* colorVals = new double[4];
colorVals[0] = 0; 
colorVals[1] = 129;
colorVals[2] = 255;
colorVals[3] = .4;

我想将其转换为包含Hex的字符串,其中包含以下内容:“#0081FF”

我将如何进行此转换?

2 个答案:

答案 0 :(得分:2)

如果您知道值在范围内,则可以使用以下代码:

#include <string>
#include <cstring>

std::string rgbstr(const double *rgb) {
  char tmp[8];

  std::snprintf(tmp, sizeof(tmp), "#%02x%02x%02x", int(rgb[0]), int(rgb[1]), int(rgb[2]));
  return std::string(tmp);
}

答案 1 :(得分:0)

您必须将每个double转换为将为两个字符的十六进制,然后将它们全部连接到一个字符串 注意:请参阅this以了解如何将double转换为hex