Arduino - 将HEX转换为RGB的奇怪行为

时间:2015-01-23 06:57:04

标签: arduino hex rgb

我试图将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() {

}

2 个答案:

答案 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() {

}