Arduino chaîne hexadécimale pour unsigned long int conversion

Je suis en train de convertir un nombre hexadécimal en décimal de la chaîne de valeur à un unsigned long int.

Par exemple:

String s="0x4d14" --> unsigned long int B = 0x4D14


OK, j'ai résolu le problème précédent,

J'ai un autre problème:

J'ai lu hexcodes de la série du moniteur comme ceci:

 char c[10];    
 char c[i]=serial.read();
 String s=c[i];
 i++;
 if (i==10)
     s="";

Mais maintenant je ne peux pas faire ça:

   const char* string = s;

D'utiliser le strtoul fonction, de sorte que dois-je faire?

Quelle que soit la logique de mon code, je n'ai pas poster mon code complet, mais mon problème est maintenant string à const char* de conversion.

  • long int A[]={0,x,1,2,3} ne peut pas être de droite comme x est pas int?!
  • je suis en train de lire des valeurs hexadécimales à partir du port série et je veux le convertir en unsigned long int. par exemple unsigned long int a[i]=serial.lire(); si cette valeur entrante était censé être hexadécimal
  • j'ai édité ma question....connaissez-vous la réponse?
  • Jetez un oeil ici nongnu.org/avr-libc/user-manual/...
  • cela ne fonctionne pas pour les valeurs en hexadécimal
  • Bien sûr, il ne. Passer 16 comme troisième argument.
  • je veux convertir String s="0xffff" à unsigned long int B=0xffff dans la même forme hexadécimale ....non pas que je veux B=65535
  • Les chiffres n'ont pas hexadécimal formes. C'est seulement quand vous convertir un nombre d'une représentation de texte que vous obtenez hexadécimal, décimal, octal, ou quoi que ce soit. 65535 et 0xffff représentent la même valeur, et c'est la valeur qui est stockée dans un unsigned long, pas le texte.