Yuc*_*ong 14
您需要做的就是将字符串转换为整数,然后将它们分成三个独立的r,g,b值.
string hexstring = "#FF3Fa0";
// Get rid of '#' and convert it to integer
int number = (int) strtol( &hexstring[1], NULL, 16);
// Split them up into r, g, b values
int r = number >> 16;
int g = number >> 8 & 0xFF;
int b = number & 0xFF;
Run Code Online (Sandbox Code Playgroud)
您可能也想看看这个问题.
编辑(感谢詹姆斯评论):
对于某些机器(例如Arduino(Uno)),整数是16位而不是32位.如果红色值正在下降,请使用长整数.
string hexstring = "#FF3Fa0";
// Get rid of '#' and convert it to integer
long number = strtol( &hexstring[1], NULL, 16);
// Split them up into r, g, b values
long r = number >> 16;
long g = number >> 8 & 0xFF;
long b = number & 0xFF;
Run Code Online (Sandbox Code Playgroud)
编辑(更安全的版本,strtoll代替使用strtol):
long long number = strtoll( &hexstring[1], NULL, 16);
// Split them up into r, g, b values
long long r = number >> 16;
long long g = number >> 8 & 0xFF;
long long b = number & 0xFF;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22799 次 |
| 最近记录: |