如何更改数组中的值并转换为 RGB

How to change value in array and convert to RGB

我正在做一个项目,其中 6 个 RFID 阅读器上的 RFID 标签将创建一个 6 位十六进制代码,该代码将通过 RGB 转换和输出。

我正在将 HEX 值转换为 RGB 值并连续打印这些值,效果很好。例如,当我写#FFFFFF 时,Serial 会打印其各自的 RGB 值 - 255、255、255。

但是,我希望能够一次替换一个 HEX 代码中的字母,这应该会连续更改其RGB 输出。在此示例中,我试图将#FFFFFF 的最后一个字母替换为 3 - #FFFFF3。 Serial 仍然正确读取前两个值,但没有正确转换最后一个值。

我读到最好用新值创建一个新数组 - 而不是替换值和更改数组,但不知道如何操作。这是我现在得到的:

#include <stdlib.h>
#include <string.h>

void setup() {
Serial.begin(9600);
}

char hexColor[] = "#FFFFFF";
void HEXtoRGB();


void HEXtoRGB() {
hexColor[6] = "3";

char red[5] = {0};
char green[5] = {0};
char blue[5] = {0};

red[0] = green[0] = blue[0] = '0';
red[1] = green[1] = blue[1] = 'X';

red[2] = hexColor[1];
red[3] = hexColor[2];

green[2] = hexColor[3];
green[3] = hexColor[4];

blue[2] = hexColor[5];
blue[3] = hexColor[6];

long r = strtol(red, NULL, 16);
long g = strtol(green, NULL, 16);
long b = strtol(blue, NULL, 16);

Serial.println(r);
Serial.println(g);
Serial.println(b);
Serial.println(hexColor);
}

任何类型的输入都将不胜感激,这是第一次使用 javascript 以外的内容。

谢谢。

这应该有效:

char hexColor[7] = "#FFFFFF";
int main(){
    for(int i=0; i<7; i++)
        printf("%c ", hexColor[i]);
    hexColor[6]='3';
    for(int i=0; i<7; i++)
        printf("%c ", hexColor[i]);
}

输出: #FFFFFF #FFFFF3

您犯的主要错误是混淆了 "3"'3'

"3" 是一个字符串,在 C 中它是一个以 null 结尾的字符数组,而 '3' 是字符 3。所以 hexColor[6] = "3"; 表示:"write the memory address of the string "3" into hexColor[6]".

您想做的是:

hexColor[6] = '3';