char *ulltoa(uint64_t value, char *buf, int radix) {
char tmp[64 + 1];
char *p1 = tmp, *p2;
static const char xlat[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if(radix < 2 || radix > 36) return nullptr;
do {*p1++ = xlat[value % (unsigned)radix];} while((value /= (unsigned)radix));
for(p2 = buf; p1 != tmp; *p2++ = *--p1) ;
*p2 = '\0';
return buf;
}
void setup() {
char buffer[65];
Serial.begin(115200);
uint64_t x = 1234567890123456789ull;
Serial.println(ulltoa(x, buffer, 10));
x = 0xFF00FF01FF02FF03;
Serial.print("0x"); Serial.println(ulltoa(x, buffer, 16));
}
void loop() {}