Using the new Arduino IDE for ESP8266 and found bugs, report them here

Moderator: igrr

User avatar
By SwiCago
#23144 Wanted to use strtol to convert a hex string into an integer or long
any variation of strtol I used caused the esp to reboot

String hexstring = "F3";
int number = (int)strtol( &hexstring, NULL, 16);

or

String hexstring = "F3";
long number = (long)strtol( &hexstring, NULL, 16);


or
String hexstring = "F3";
char *p;
long number = (long)strtol( &hexstring, p, 16);

or
char *p;
char *s;
s = "F3";
long number = strtol(s,&p,16);

Made the following as a work around to covert "#FFFFFF" RGB html values to ints

Code: Select allvoid getRGB(String hexRGB, int *rgb) {
  hexRGB.toUpperCase();
  char c[7];
  hexRGB.toCharArray(c,8);
  rgb[0] = convertToInt(c[1],c[2]); //red
  rgb[1] = convertToInt(c[3],c[4]); //green
  rgb[2] = convertToInt(c[5],c[6]); //blue
}

int convertToInt(char upper,char lower)
{
  int uVal = (int)upper;
  int lVal = (int)lower;
  uVal = uVal >64 ? uVal - 55 : uVal - 48;
  uVal = uVal << 4;
  lVal = lVal >64 ? lVal - 55 : lVal - 48;
  return uVal + lVal;
}
User avatar
By Ben Part
#27801 For base 10, it works :

Code: Select allchar tst[11] = "305&blabla";
char* charNbr = strtok(tst, "&");
char *endChar;
int16_t value = strtol(charNbr, &endChar, 10);


=> 305

Without "endChar" ("strtol(charNbr, null, 10)" ), it crashes.

Base 16 : not tested.