Urichalex
@Urichalex
Кратко о себе)

Как преобразовать число c++?

Здравствуйте. Начал интересоваться программированием МК, но в язык еще не могу войти.
Есть библиотека WS2812FX, в которой реализовано получение некоторых текущих данных, в частности получение текущего цвета:
uint32_t WS2812FX::getColor(void) {
  return _segments[0].colors[0];
}

И так же установка цвета:
void WS2812FX::setColor(uint32_t c) {
    RESET_RUNTIME;
    _segments[0].colors[0] = c;
    setBrightness(_brightness);
}

В скетче цвет устанавливается так:
uint32_t tmp = (uint32_t) strtol(&server.arg(i)[0], NULL, 16);
if(tmp >= 0x000000 && tmp <= 0xFFFFFF) {
        ws2812fx.setColor(tmp);
}

То есть в server.arg(i)[0] приходит HTML цвет в виде FF0000
В чем моя загвоздка:
Получаю текущий цвет ws2812fx.getColor() и отдаю его http, но приходит уже значение совершенно иное: для установленного белого цвета (FFFFFF) приходит число 16777215 - это получается максимальное число unsigned int, а, например, для зеленого (00FF00) - это число 65280

В общем вопрос: Как мне из этого числа получить обрано HTML код цвета?
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
15432
@15432
Системный программист ^_^
0xFFFFFF это шестнадцатеричное представление десятичного числа 16777215
как и 0xFF00 равно 65280 в десятичной.

Даже калькулятор Windows в режиме "программист" имеет фичу преобразования систем счисления
5a99be29be4bf244944246.png

в C вывести число в HEX виде можно через printf("%X", number)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы