Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Получение отдельных байтов числа в С++

Страниц (1): [1]
 

1. Skycrew - 07 Ноября, 2019 - 08:18:37 - перейти к сообщению
Цвет кодируется 3-мя байтами, например белый: ff ff ff или в переводе в десятичную систему: 16777215 - в таком виде Кибор и сохраняет цвета пиксели в массивах, когда захватывает с экрана. Нужно получить отдельные байты цветов из переменных по указателю из dll на C++ чтобы дальше с ними можно было отдельно работать.

Суть задачи состоит в том, чтобы через Dll производить операции с цветами в массивах пикселей, конкретно мне сейчас нужно более гибко отслеживать динамические пиксели по отдельным цветовым каналам, а это невозможно сделать в Кибор.

Можно, как вариант, прямо в Киборе раскладывать цвета на 3 составляющих через: rvalue(a) / gvalue(a) /rvalue(b) и класть в отдельные массивы, чтобы в таком виде передавать в dll, но это работает очень долго(
2. Zireael - 07 Ноября, 2019 - 17:06:37 - перейти к сообщению
Вопрос-то в чём? Если разложить цвет на каналы, то можно так:
CODE:
// код C++
#include <iostream>

int main()
{
int color = 10054493; // цвет
int R = color & 255; // красный
int G = (color >> 8) & 255; // зелёный
int B = color >> 16; // синий
std::cout << R << " " << G << " " << B;
}
3. Skycrew - 08 Ноября, 2019 - 00:44:24 - перейти к сообщению
 Zireael пишет:
Вопрос-то в чём? Если разложить цвет на каналы, то можно так:
CODE:
// код C++
#include <iostream>

int main()
{
int color = 10054493; // цвет
int R = color & 255; // красный
int G = (color >> 8) & 255; // зелёный
int B = color >> 16; // синий
std::cout << R << " " << G << " " << B;
}


Супер! Именно это было и нужно. Выручаешь уже не в первый раз) Спасибо большое!!

Powered by ExBB FM 1.0 Final