C: convertir binario a decimal

¿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.