convertir el Int. sin signo en una matriz de caracteres (Cadena)

1

EDITAR: lo estoy usando para programar una foto, así que la C será bastante limitada. El compilador es XC8.

La siguiente función espera que pase una cadena:

void OLED_string(char* str, short x, short y) {

    short pos = 0;
    char character = str[pos++];
    short startx = x;
    short starty = y;
    while(character != '
void OLED_string(char* str, short x, short y) {

    short pos = 0;
    char character = str[pos++];
    short startx = x;
    short starty = y;
    while(character != '%pre%') {
        OLED_char(character, startx, starty);
        if(startx >= 123) starty++; //wrap around
        startx += 5;
        character = str[pos++];
    }
}
') { OLED_char(character, startx, starty); if(startx >= 123) starty++; //wrap around startx += 5; character = str[pos++]; } }

Me gustaría mostrar un valor que tengo en un entero sin signo. Este valor se debe convertir a Flotante y luego dividido por diez. Como float es muy lento, preferiría convertir el número entero en una cadena y luego simplemente agregar un punto antes del último carácter. Intenté pasar directamente el entero a esta función, pero no funciona. Gracias!

    
pregunta sharkyenergy

3 respuestas

3

Si puede usar las funciones de la biblioteca estándar de C, sprintf () debe manejar la conversión de cadena. En lugar de agregar el punto decimal mezclando caracteres, puedes usar la aritmética de enteros:

char str[20];
unsigned int value = 105;

sprintf(str, "%u.%u", value / 10, value % 10);

La división entera no será rápida, pero debería ser más rápida que el punto flotante. Y sospecho que el int - > El algoritmo de conversión de cadenas estará haciendo división de todos modos.

    
respondido por el Adam Haun
1

La función itoa es tu amigo. enlace

    
respondido por el Eugenio Pace
0
Las funciones

itoa y ftoa están en stdlib.h en el compilador XC8, por lo que funcionarán en PIC. Solo incluye <stdlib.h>

    
respondido por el Kanda

Lea otras preguntas en las etiquetas