Я пытался выяснить, как это сделать во встроенном C++ некоторое время, у меня есть гексаговый цвет для веб-сайта в RGB888, например, «# ba00ff», который Я хочу, чтобы преобразовать в шестнадцатеричном значение C++ RGB555, например 0x177CC/C++ Hex char * to byte array
в настоящее время я уже подстриженный на # из строки, и я застрял при преобразовании его в тип можно использовать для создания RGB555
моего кода в настоящее время выглядит так:
p_led_struct->color = "#ba00ff";
char hexString[7] = {};
memmove(hexString, p_led_struct->color+1, strlen(p_led_struct->color));
byte colorBytes[3];
sscanf(hexString,"%x%x%x",&colorBytes);
Значение hexString становится «ba00ff» правильно, хотя массив colorBytes имеет неверные данные.
любая помощь в том, как я должен делать это преобразование было бы удивительным :)
Спасибо!
Если вы пропустите первый символ , вам не нужно вычитать 1 из длины строки? –
Я считаю, что конец строки '/ n' делает «ba00ff» 7 символов, я не уверен, что массив символов без конца строкового символа в sscanf вызовет ошибку. ** Изменить ** извините, я имел в виду «Null-terminated» '\ 0' not'/n' –
'/ n' является символом новой строки, а не терминатором. В вашей строке нет новой строки. –