Hexadezimalen String in DEC Integer konvertieren

Von String mit Hex zu long:

#include <stdlib.h>

void setup()
{
  // anderer code hier
  char in[] = "00CCA7F6";
  long  out = strtol(in, NULL, 16);
  // anderer code hier
}

Na toll -.-
und ich hab mich schon darüber aufgeregt, dass es nicht wie überall sonst eine Funktion dafür gibt.

So richtig schön zum spielen hat das jemand hier gemacht:

http://www.arndt-bruenner.de/mathe/scripts/Zahlensysteme.htm

Werni:
Hi MaFu,
out = out << 4 + in[t];
hat nicht funktioniert.
*16 aber schon.
Jetzt funktionert es.
Vielen Dank euch beiden,

Grüße
Werni

War für mich wohl noch zu früh am Morgen.
Der Shift-Operator hat eine niedrigere Rangfolge, es muss also so lauten:
out = (out << 4) + in[t];

Also zum mitschreiben wäre das hier die Lösung???

void setup() {
  Serial.begin(9600);
  char in[] = "00CCA7F6";
  
  
  //To DEZ
  int Zahlensystem = 16;
  int length = sizeof(in)-1;
  long out = 0;
  char newIn[length];
  for (byte t=0; t < length; t++) {
    Serial.print(in[t]); Serial.print("  ");
    if (in[t]>='0' && in[t]<='9')
      in[t] -= '0';
    if (in[t]>='A' && in[t]<='F')
      in[t] -= 'A'-10;
    if (in[t]<10) Serial.print(" ");
    Serial.print(in[t], DEC); Serial.print(" * 16^");
    out = (out << 4) + in[t];
    Serial.print(length - t - 1, DEC);
    Serial.print(" = ");
    Serial.println(in[t] * pow(Zahlensystem, length - t - 1));
  }
  Serial.println("------------");
  Serial.println(out, DEC);
}