我试图将HEX颜色代码转换为RGB但是当我在Arduino上运行代码时,它并没有拿起RED。
我做错了吗?
在C ++编译器上工作得很好。
void setup() {
Serial.begin(115200);
String hexstring = "B787B7";
int number = (int) strtol( &hexstring[1], NULL, 16);
int r = number >> 16;
int g = number >> 8 & 0xFF;
int b = number & 0xFF;
Serial.print("red is ");
Serial.println(r);
Serial.print("green is ");
Serial.println(g);
Serial.print("blue is ");
Serial.println(b);
}
void loop() {
}
答案 0 :(得分:7)
当我运行你的代码时,我仍然没有获得红色的价值。 但是使用MAC的相同代码
long number = (long) strtol( &hexstring[1], NULL, 16 );
到
long number = (long) strtol( &hexstring[0], NULL, 16 );
我希望这有助于有人挣扎于RGB和HEX值
答案 1 :(得分:6)
number
类型应为long
,类型int
的编码为16位,不能超过32,767。
void setup() {
Serial.begin(115200);
String hexstring = "B787B7";
long number = (long) strtol( &hexstring[1], NULL, 16);
int r = number >> 16;
int g = number >> 8 & 0xFF;
int b = number & 0xFF;
Serial.print("red is ");
Serial.println(r);
Serial.print("green is ");
Serial.println(g);
Serial.print("blue is ");
Serial.println(b);
}
void loop() {
}