Pasar de texto a números en Maxima y viceversa

alf:"abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQ-RSTUVWXYZáéíóúÁÉÍÓÚ0123456789 ,.;:";

codi_numerica(alf,msj):=block(
    [extra],
if stringp(msj) then (
    extra:makelist(mod(sposition(charat(msj,i),alf),slength(alf)),i,1,slength(msj))
     )
           else
        (
        extra:"",
        for i in msj do extra:concat(extra,alf[i-1])
        ),
    extra
    )$


alf es el alfabeto que usa, la 'a' es la posición 1, la 'b' la 2.... ':' la 0 y última posición.
Si a la función le pasas un mensaje en formato String (texto), te devolverá un array y en cada posición de este el valor de cada caracter de la cadena.
Si a la función le pasas un mensaje en formato array numérico, te devolvera una cadena String con el texto solución.