itoa: Integer to Ascii

Uno de los primeros problemas por resolver en el tema de la depuración es la salida por pantalla de información. El segundo es como mostrar níºmeros.

itoa es una función de depuración ( en la versión final sera un método de la Clase Integer ) que me permite convertir a array de caracteres un numero cualquiera.

char * itoa(char *buf, long num, int base /*=10*/ )
{
    int i = 0;
    while ( 1 )
    {   
        buf[i++] = “0123456789″[num % base];
        num /= base;
        if ( num == 0 ) break;
    }

    buf[i] = ‘\0′;

    for ( int j = 0; j<i/2; j++)
    {
         char aux = buf[j];
         buf[j] = buf[i-1-j];
         buf[i-1-j] =  aux;
    }
    return buf;

}

Funciona para cualquier base hasta la decimal.
Es una implementacion bastante sencilla, pero lo que no me gusta es el recorrido que tengo que hacer al buffer al final para ordenar correctamente el array. Si a alguien se le ocurriera una manera mas eficiente de hacerlo … estoy abierto a sugerencias.

Technorati Tags: ,

Share/Save/Bookmark

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

No comments yet.

Leave a comment

(required)

(required)