C++ 如何将此整数拆分为其原始值?

C++ 如何将此整数拆分为其原始值?,c++,arduino,C++,Arduino,创建RGB编号的公式如下: R (value between 0-100) + G (value between 0-100) * 1000 + B (value between 0-100) * 1000000 结果是:8017035 如何将此值转换回其原始的3个变量值 使用和esp8266运行此代码的方式完全相同,但使用模数而不是乘法 int color = 8017035; int r = color % 100; int g = (color / 1000) % 100; int b

创建RGB编号的公式如下:

R (value between 0-100) + G (value between 0-100) * 1000 + B (value between 0-100) * 1000000
结果是:8017035

如何将此值转换回其原始的3个变量值


使用和
esp8266
运行此代码

的方式完全相同,但使用模数而不是乘法

int color = 8017035;
int r = color % 100;
int g = (color / 1000) % 100;
int b = (color / 1000000) % 100;

,下面是这些值如何以完全相同的方式往返

,但使用模而不是乘法

int color = 8017035;
int r = color % 100;
int g = (color / 1000) % 100;
int b = (color / 1000000) % 100;

,下面是值往返的方式

有几种方法可以做到这一点

要求R,你可以模1000。剩下的将是R

要求G,你可以模1000000,减去R,再除以1000。模将去掉B值,然后减去R(你已经找到了),只剩下G*1000

要找到B,你可以减去R和G,然后除以1000000


在R、G或B为100的情况下,这将为您提供正确的结果。CoryKramer当前的顶级答案将循环并告诉您数字是0,即使是100

有几种方法可以做到这一点

要求R,你可以模1000。剩下的将是R

要求G,你可以模1000000,减去R,再除以1000。模将去掉B值,然后减去R(你已经找到了),只剩下G*1000

要找到B,你可以减去R和G,然后除以1000000


在R、G或B为100的情况下,这将为您提供正确的结果。CoryKramer当前的顶级答案将循环并告诉您数字是0,即使是100

哇,非常感谢您的快速回复!你的代码工作得很完美。我不知道是这么简单。谢谢哇,非常感谢您的快速回复!你的代码工作得很完美。我不知道是这么简单。谢谢现在您了解了为什么我们通常为每个颜色值使用8位,如在
#定义颜色(r,g,b)(((b)和0xff)@MichaëlRoy why macro,尽管如此?@LogicStuff这是因为宏在这些小注释部分中更容易阅读。现在您了解了为什么我们通常为每个颜色值使用8位,如
#定义颜色(r,g,b)((b)&0xff)@MichaëlRoy为什么使用宏?@LogicStuff这是因为宏在这些小注释部分中更容易阅读。这是正确的,CoryKramer以前的回答没有考虑100个值。这是正确的,CoryKramer以前的回答没有考虑100个值。