Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created December 18, 2019 23:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/68cde9ab8035d0dff47e5e224f39ee44 to your computer and use it in GitHub Desktop.
Save parzibyte/68cde9ab8035d0dff47e5e224f39ee44 to your computer and use it in GitHub Desktop.
/**
* Traductor de binario a texto (binario a español) en C
* @date 2019-12-18
* @author parzibyte
* @see https://parzibyte.me/blog
* */
#include <stdio.h>
#include <string.h>
// Inspirado en
//https://parzibyte.me/blog/2018/11/19/convertir-binario-decimal-c/
int binarioADecimal(char *cadenaBinaria, int longitud) {
int decimal = 0;
int multiplicador = 1;
char caracterActual;
for (int i = longitud - 1; i >= 0; i--) {
caracterActual = cadenaBinaria[i];
if (caracterActual == '1') {
decimal += multiplicador;
}
multiplicador = multiplicador * 2;
}
return decimal;
}
int main(void) {
// El binario que vamos a traducir
char textoBinario[] = "01001101 01101001 00100000 01101110 01101111 01101101 01100010 01110010 01100101 00100000 01100101 01110011 00100000 01001100 01110101 01101001 01110011 00100000 01000011 01100001 01100010 01110010 01100101 01110010 01100001 00100000 01000010 01100101 01101110 01101001 01110100 01101111";
printf("En binario es: \n%s\n", textoBinario);
char delimitador[] = " "; // Para separar cada octeto
// Separar cadena por espacios. https://parzibyte.me/blog/2018/11/13/separar-cadena-delimitadores-c-strtok/
char *octeto = strtok(textoBinario, delimitador);
printf("En texto es: \n");
while (octeto != NULL) {
char letra = (char) binarioADecimal(octeto, (int) strlen(octeto));
printf("%c", letra);
octeto = strtok(NULL, delimitador);
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment