Accidentalmente descubrí algo que ya muchos deben saber:
Serial.print(numero,base);
Esta instrucción imprime un número entero en la base especificada. Si base=1 el número se imprime en decimal.
Si base tiene decimales, se truncan. Como se acostumbra hacer, si el número es tipo float se imprime en decimal y base representará el número de posiciones decimales a imprimir.
Por ejemplo,
Serial.print(100,1); // ==> 100
Serial.print(100,2); // ==> 1100100 BIN
Serial.print(100,3); // ==> 10201
Serial.print(100,4); // ==> 1210
Serial.print(100,5); // ==> 400
Serial.print(100,6); // ==> 244
Serial.print(100,7); // ==> 202
Serial.print(100,8); // ==> 144
Serial.print(100,9); // ==> 121
Serial.print(100,10); // ==> 100 DEC
Serial.print(100,11); // ==> 91
Serial.print(100,12); // ==> 84
Serial.print(100,13); // ==> 79
Serial.print(100,14); // ==> 72
Serial.print(100,15); // ==> 6A
Serial.print(100,16); // ==> 64 HEX
En aquellos días yo usaba base 2 (binario). Me inicié con una mainframe CDC 6600 (o era 6700?) que tenía una longitud de palabra de 60 bits y el "lenguaje" era base 8 (octal). Cuando aparecieron los microprocesadores fue que empecé a usar base 16 (hexadecimal).
Solamente he usado base 5 para algo práctico, y me sirvió bastante. Los demás casos, como curiosidad.