Arduino: comportamiento extraño al convertir HEX en RGB
(2)
Cuando ejecuté su código todavía no estaba recogiendo el valor de rojo. Sin embargo, usando el mismo código de MAC
long number = (long) strtol( &hexstring[1], NULL, 16 );
a
long number = (long) strtol( &hexstring[0], NULL, 16 );
Espero que esto ayude a alguien a luchar con los valores RGB y HEX
Intento convertir un código de color HEX en RGB, pero cuando ejecuto el código en Arduino, no capta el ROJO.
¿Estoy haciendo algo mal?
En un compilador C ++ funciona bien.
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() {
}
Su number
debe ser de tipo long
ya que tipo int
está codificado en 16 bits y no puede tomar un valor superior a 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() {
}