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



我有一个带有rgba颜色值的双精度数组。类似这样的东西:

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

我想把它转换成一个带有十六进制的字符串,其中包含这样的内容:"#0081FF"

我该如何转换?

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

#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);
}

您必须将每个双精度转换为两个字符的十六进制,然后将所有字符连接为一个字符串注意:请参阅此内容以了解如何将双精度转换为十六进制

相关内容

最新更新