void setup() {
uint64_t a = 0x9283;
char* str = ui64toa(a);
Serial.begin(115200);
Serial.println(str);
free(str);
}
void loop() {
// put your main code here, to run repeatedly:
}
char* ui64toa(uint64_t value) {
if (value == 0) {
char* str = malloc(2);
if (str == NULL) {
Serial.println("malloc failed for ui64toa()");
return NULL;
}
str[1] = '\0'; str[0] = '0';
return str;
}
int i;
for (i = 0; i <= 20; ++i) {
if (value < pow(10, i))
break;
}
char* str = malloc(i + 1);
if (str == NULL) {
Serial.println("malloc failed for ui64toa()");
return NULL;
}
str[i] = (char) 0; // add null terminator
for (--i; i >=0; --i) {
str[i] = (char) ((value % 10) + 48);
value = value / 10;
}
return str;
}