You want to convert from char to uint64_t, that is even simpler than the other way around.
char txt[] = "7023833275277351321";
char* dec(uint64_t n);
uint64_t cvttoull(const char *res);
void setup() {
Serial.begin(115200);
Serial.print(F("conversion from '"));
Serial.print(txt);
Serial.print(F("' results in "));
uint64_t val = cvttoull(txt);
Serial.print(dec(val));
Serial.println();
}
void loop() {}
uint64_t cvttoull(const char *res) {
uint64_t result = 0;
while (*res) {
result *= 10;
result += *res++ - '0';
}
return result;
}
char* dec(uint64_t n) {
static char Str[20];
char* str = &Str[sizeof(Str) - 1];
*str = '\0';
do {
char c = n % 10;
n /= 10;
*--str = c + '0';
} while (n > 0);
return str;
}
conversion from '7023833275277351321' results in 7023833275277351321