Library for printing 64-bit integers on Particle devices
The standard C library on Particle devices (at least as of Device OS 3.0) does not support 64-bit sprintf formatting such as %llu or %llx or Microsoft extensions like %I64u. This includes not only sprintf(), and its variations like snprintf(), but also things that use it, like Log.info().
Convert an unsigned 64-bit integer to a string
String toString(uint64_t value, unsigned char base = 10);valueThe value to convert (uint64_t)baseThe number base. Acceptable values are 2, 8, 10, and 16. Default is 10 (decimal).- Returns A String object containing an ASCII representation of the value.
Convert an signed 64-bit integer to a string (ASCII decimal signed integer)
String toString(int64_t value);valueThe value to convert (int64_t)- Returns A String object containing an ASCII representation of the value (decimal)
#include "Particle.h"
#include "Print64.h"
SYSTEM_THREAD(ENABLED);
SerialLogHandler logHandler;
void setup() {
}
void loop() {
Log.info("millis=%s", toString(System.millis()).c_str());
delay(1000);
}
The System.millis() function returns a uint64_t. It works like millis() but since it's 64-bit, it doesn't wrap around to 0 after 49 days so it's easier to do comparisons with it.
Note that you must add a .c_str() to the result of toString() when passing it as variable arguments to sprintf(), Log.info(), etc.!