У меня есть массив двойников со значениями цвета 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);
}
Вы должны преобразовать каждый дубль в гекс, который будет состоять из двух символов, а затем соединить их все в одну строку
Примечание: см. этот чтобы увидеть, как конвертировать double в hex