Arduino: Convertir une Chaîne de caractères hex “#FFFFFF” en 3 int
Je suis complètement novice en C/C++ et j'en suis à essayer de comprendre comment faire pour convertir un argument de type Chaîne qui serait sous la forme d'un style html rgb hexadécimal tel que "#ffffff" et de le transformer en 3 entiers vars
Je suis vraiment pas sûr de l'endroit où être.
OriginalL'auteur Polygon Pusher | 2014-05-10
Vous devez vous connecter pour publier un commentaire.
Tout ce que vous devez faire est de convertir la chaîne de caractères en nombres entiers, puis les diviser en trois r, g, b valeurs.
Vous voudrez peut-être avoir un coup d'oeil à cette question.
Edit (merci à James commentaires):
Pour une machine (par exemple Arduino (Uno)), entiers 16 bits au lieu de 32. Si les valeurs en rouge sont à la baisse pour vous, utiliser un long temps de au lieu.
Edit (encore plus sûre version, utilisez
strtoll
au lieu destrtol
):Vous pouvez convertir une chaîne de
const char*
par la suitestring v1 = "#FF3Fa0"; const char* v2 = v1.c_str()
. Et aussi, ce&hexstring[1]
signifie simplement que vous prenez l'adresse dehexstring[1]
, il n'a pas d'importance si elle eststring
ouconst char*
. J'ai modifié la réponse.Merci pour la réponse Yuchen! Je tiens à préciser que pour mon Arduino (Uno) ints sont en 16 bits au lieu de 32. Si les valeurs en rouge sont à la baisse pour vous, essayez en utilisant un long à la place.
cela est très utile! Je vous remercie. J'ai ajouté vos commentaires dans la réponse.
quand je lance la chaîne hexstring = "#FF3Fa0"; je reçois des "cordes" n'a pas été déclarée dans le champ d'application
OriginalL'auteur Yuchen Zhong
Tout d'abord, vous devez analyser votre valeur. Vous pouvez le faire de cette façon:
Ensuite, vous permet de convertir chaque chaîne de caractères en entier correspondant. Vous pouvez apprendre à le faire qu'à partir de cette réponse.
OriginalL'auteur radgeRayden
OriginalL'auteur R Sahu