Serial.print() of a 64-bit DOUBLE

robtillaart, thanks for your great code

i test with uint64_t a = 4294329243;

it's can display in DEC, BIN, OCT, HEX all correct.

thank you very much. :slight_smile:

robtillaart:
extra code to append to for 1.0x print.cpp

#ifdef SUPPORT_LONGLONG

size_t Print::println(int64_t number, int base)
{
 size_t n = 0;
 n += print(number, base);
 n += println();
 return n;
}

size_t Print::print(int64_t number, int base)
{
 size_t n = 0;
 if (number < 0)
 {
   write('-');
number = -number;
n++;
 }
 n += print((uint64_t)number, base);
 return n;
}

size_t Print::println(uint64_t number, int base)
{
 size_t n = 0;
 n += print((uint64_t)number, base);
 n += println();
 return n;
}

size_t Print::print(uint64_t number, int base)
{
 size_t n = 0;
 unsigned char buf[64];
 uint8_t i = 0;

if (number == 0)
 {
   n += print((char)'0');
   return n;
 }
 
 if (base < 2) base = 2;
 else if (base > 16) base = 16;

while (number > 0)
 {
   uint64_t q = number/base;
   buf[i++] = number - q*base;
   number = q;
 }
 
 for (; i > 0; i--)
   n += write((char) (buf[i - 1] < 10 ?
     '0' + buf[i - 1] :
     'A' + buf[i - 1] - 10));
 
  return n;
}
#endif




additional code for 1.0x print.h


// uncomment next line for int64 support
#define SUPPORT_LONGLONG

....

#ifdef SUPPORT_LONGLONG
size_t println(int64_t, int = DEC);
size_t print(int64_t, int = DEC);
size_t println(uint64_t, int = DEC);
size_t print(uint64_t, int = DEC);
#endif