我一直在試圖解決如何在嵌入式C++中做一段時間,現在我已經在RGB888網站中使用了十六進制顏色,例如「#ba00ff」我想轉換成C++ RGB555十六進制值,例如0x177CC/C++十六進制字符*到字節數組
目前我已經從字符串修剪#和我堅持它轉換成I型可用於創建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);
儘管colorBytes數組正確,但hexString值正確變爲「ba00ff」有不正確的數據。
如何我應該做這種轉換的任何援助將是真棒:)
謝謝!
如果跳過第一個字符,你不需要從字符串長度中減去1嗎? –
我相信字符串'/ n'的結尾會產生「ba00ff」7個字符,我不確定在sscanf中沒有字符串char結尾的char數組是否會導致錯誤。 **編輯**對不起,我的意思是以'Null-terminated''\ 0'不是'/ n' –
'/ n'是換行符,而不是終止符。你的字符串中沒有換行符。 –