¿Hay alguna función dedicada para convertir los valores binarios a valores decimales? tal como (1111 a 15), (0011 a 3).
Gracias por adelantado
Sí, la función strtol tiene un parámetro base
que puede utilizar para este propósito.
Aquí hay un ejemplo con algunos errores básicos de manejo:
#include #include #include int main() { char* input = "11001"; char* endptr; int val = strtol(input, &endptr, 2); if (*endptr == '\0') { printf("Got only the integer: %d\n", val); } else { printf("Got an integer %d\n", val); printf("Leftover: %s\n", endptr); } return 0; }
Esto analiza correctamente e imprime el número entero 25 (que es 11001
en binario). El manejo de errores de strtol
permite notar cuando partes de la cadena no pueden analizarse como un entero en la base deseada. Querría aprender más sobre esto leyendo la referencia a la que he vinculado anteriormente.
Analícelo con strtol , luego conviértalo en una cadena con una de las funciones de printf . P.ej
char binary[] = "111"; long l = strtol(binary, 0, 2); char *s = malloc(sizeof binary); sprintf(s, "%ld\n", l);
Esto asigna más espacio del necesario.