Как я могу убедиться, что я вывожу только 6-значное шестнадцатеричное значение с 0-дополнительным значением в C ++? - PullRequest
0 голосов
/ 27 ноября 2018

По сути, я пытаюсь сгенерировать шестнадцатеричное значение, учитывая значения красного, зеленого и синего ... Я могу преобразовать все в шестнадцатеричное, но я хотел бы, чтобы результатом было шестнадцатеричное шестизначное число, котороедополняется нулями, если есть только 4 выведенные цифры.

Вот что у меня есть: "

int main() {
stringstream hexstring;
int red,green,blue;
cout << "Red: ";cin >> red;
cout << "Green: ";cin >> green;
cout << "Blue: ";cin >> blue;

hexstring << hex << setfill('0')  << setw(6) << uppercase << red << green  << blue;

cout << "#" << hexstring.str();



}

Вот вывод, когда я использую 0 для красного, 1 для зеленого и 43 для синего:

Red: 0
Green: 1
Blue: 43
#00000012B

Это добавляет 6 нулей, потому что мой setw равен 6. Я могу установить его на 2 нуля, чтобы получить всего 6 цифр, но если я изменю значения красного, зеленого, синего, мне придется также изменить значение setw ...

Как сделать так, чтобы он последовательно выводил 6-значное число для всех значений в пределах 255?

1 Ответ

0 голосов
/ 27 ноября 2018

setw влияет только на следующее поле вывода .

То, что вы, вероятно, хотели написать, было:

hexstring << hex << setfill('0') << uppercase
          << setw(2) << red
          << setw(2) << green
          << setw(2) << blue;
...