void setup()
{
Serial.begin( 115200);
Serial.println( "add \"0\" printf");
Serial.println( "DEC HEX DEC HEX");
Serial.println( "-- ---- -- ----");
}
void loop()
{
int key = random( 0, 25);
// ------------------------------------------------
// Print as decimal
// ------------------------------------------------
// Value is 10 or above ? No leading zero
// Value is 9 or below ? Add leading zero
if( key < 10)
{
Serial.print( "0"); // Add leading zero
}
Serial.print( key, DEC);
// ------------------------------------------------
// Print as hexadecimal
// ------------------------------------------------
// Value is 0x10 or above ? No leading zero
// Value is 0x9 or below ? Add leading zero
Serial.print( " 0x");
if( key < 0x10)
{
Serial.print( "0");
}
Serial.print( key, HEX);
// ------------------------------------------------
// Print using printf() formatting
// ------------------------------------------------
// For the format, see: https://www.cplusplus.com/reference/cstdio/printf/
//
// The %02d has a minimal size of 2.
// To be safe, allow the integer to be anything.
// The value "-30000" uses 6 bytes, plus zero-terminator makes 7.
// So a buffer of 7 should be enough, then I make it 10.
char buffer[10];
sprintf( buffer," %02d", key);
Serial.print( buffer);
sprintf( buffer," 0x%02X", key); // lowercase 0x, uppercase value
Serial.print( buffer);
Serial.println();
delay( 500);
}