Преобразование двойных значений цвета rgba в символ гекса

У меня есть массив двойников со значениями цвета RGBA. Что-то вроде этого:

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

Я хочу преобразовать его в строку с шестнадцатеричным кодом, которая содержит что-то вроде этого: «# 0081FF»

Как бы я сделал это преобразование?

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

Другие решения

Вы должны преобразовать каждый дубль в гекс, который будет состоять из двух символов, а затем соединить их все в одну строку
Примечание: см. этот чтобы увидеть, как конвертировать double в hex

0

По вопросам рекламы [email protected]