#23 creo que eres tú quien no le entiende a él. Qué más te dará la representación numérica si puedes cambiarla a gusto del consumidor cuando te de la gana. La representación no es más que eso: representación. Un número no vale nada de por sí.
Tu problema no es de compresión sino de representación. Tú lo que quieres es un compresor que devuelva el resultado en base 10. Comprime, pasa tu cadena comprimida (en la base que sea, da igual binario, decimal... da lo mismo) a base 10 y ya tienes tu bonito número comprimido y tecleable en el móvil.
Incluso si usas * y # puedes usar base 12 y comprime un poquito más.
Aún así, se pierde mucha compresión en el cambio de base (si vienes de "bytes"), así que no sé si te resultará rentable. Haz pruebas.
De todas formas creo que estás dando palos de ciego. Comprimir cadenas TAN pequeñas es imposible. Normalmente los compresor se aprovechan de patrones porque, aún añadiéndole datos de control, gracias a la repetición de patrones acabas ahorrando espacio. Este no es tu caso: tus cadenas apenas van a tener patrones repetidos, por lo que la compresión NO es el camino a seguir. Siempre vas a tener el problema de cadenas que "comprimen" a mayor tamaño como comentas en #12. Es el precio a pagar por comprimir cosas sin apenas repeticiones: no sólo no comprimen sino que aumentan de tamaño por los caracteres de control.
Lo máximo que creo puedes hacer es, si la entrada al "compresor" son sólo números, coger tu cadena en base 10 y pasarla a base 12 para aprovechar * y # también como caracteres de salida.
EDIT:
En Java:
public static String compress(long integer) {
return Long.toString(integer, 12)
.replace('a', '*')
.replace('b', '#');
}
compress(1234567890) = "2*5555016"; // Ahorro de un carácter
El ahorro medio es de un carácter. No vas a sacar mucho más si no juegas con duración de las pulsaciones o algo de eso.
EDIT2:
Huffman coding es otro algoritmo que te podría interesar, pero estamos en las mismas: la mayoría de algoritmos de compresión se aprovechan de "casos específicos". Este sólo te conviene si hay diferencias de probabilidad de aparición de los símbolos.