Saint Kidd Postado Julho 6, 2012 Denunciar Share Postado Julho 6, 2012 Olá,estou criando um programa em que o usuário escolha se ele quer fazer uma conversão de um string para binário ou de binário para strings.Por exemplo:Digite uma frase: Conversor binárioSaída em binário: 00100100 00100110 10100101 00010010 (É só um exemplo)Digite a sentença binária: 00100100 00100110 10100101 00010010 (É só um exemplo)Saída: Conversor binárioPra passar de string para binário eu já consegui fazer, mas estou tendo problemas para passar de binário para string.Alguém sabe como eu posso fazer isso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Saint Kidd Postado Julho 9, 2012 Autor Denunciar Share Postado Julho 9, 2012 Ninguém sabe me responder isso? o-o Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 PedroCunha Postado Julho 11, 2012 Denunciar Share Postado Julho 11, 2012 Você pode tentar fazer o inverso do processo que você usou na conversão de string para binário, fazendo com que o programa imprima o correspondente do código binário em forma de string. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Saint Kidd Postado Julho 12, 2012 Autor Denunciar Share Postado Julho 12, 2012 O problema é que pra inverter de string para binário, eu utilizei um for para varrer cada caractere e imprimir sua respectiva forma binária. Mas isso não funciona para fazer a volta, pois um caractere seria, por exemplo, 00100000 e o for iria varrer número por número, e não o byte inteiro. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 PedroCunha Postado Julho 12, 2012 Denunciar Share Postado Julho 12, 2012 Talvez um tanto de if? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Julho 14, 2012 Denunciar Share Postado Julho 14, 2012 (editado) #include <stdlib.h> #include <stdio.h> #include <string.h> #define BUFSZ 256 char *str2bin(char *str) { int chLen = sizeof(char)*8, strLen = strlen(str), binLen = chLen*strlen(str) + 1; char *bin = (char *)malloc(binLen), *binPtr, *strEnd = str+strLen, *chBase = bin; for (; str < strEnd; str++) { char ch = *str; binPtr = chBase + chLen - 1; for (; binPtr >= chBase; binPtr--) { *binPtr = (ch & 1) + '0'; ch = ch >> 1; } chBase += chLen; } binPtr[9] = ''; return bin; } char *bin2str(char *bin) { int chLen = sizeof(char)*8, binLen = strlen(bin), strLen = sizeof(char)*binLen/8; char *str = (char *)malloc(strLen+1), *strPtr = str, *binPtr, *strEnd = str+strLen, *chBase = bin; for (; strPtr < strEnd; strPtr++) { char p = 1; *strPtr = 0; binPtr = chBase + chLen - 1; for (; binPtr >= chBase; binPtr--) { *strPtr += p*(*binPtr-'0'); p = p << 1; } chBase += chLen; } strPtr[8] = ''; return str; } int main(void) { char input[BUFSZ]; printf("String? "); fgets(input, BUFSZ, stdin); printf("BIN= %s\n", str2bin(input)); printf("STR= %s\n", bin2str(str2bin(input))); return 0; }01000001011101001100001110101001001000000110110101100001011010010111001100100001 Editado Julho 15, 2012 por == Douplus == Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Julho 15, 2012 Denunciar Share Postado Julho 15, 2012 Que engraçado... o caractere nulo não aparece no post! Algum admin pode ver por que não é possível colocar <barra invertida + 0> ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Julho 16, 2012 Denunciar Share Postado Julho 16, 2012 Que engraçado... o caractere nulo não aparece no post! Algum admin pode ver por que não é possível colocar <barra invertida + 0> ?Pois é, Douplus... Sempre foi assim, nunca foi descoberto o por quê.Parece ser uma limitação do IPB, uma pena, já me atrapalhou diversas vezes também.Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Julho 17, 2012 Denunciar Share Postado Julho 17, 2012 Que engraçado... o caractere nulo não aparece no post! Algum admin pode ver por que não é possível colocar <barra invertida + 0> ?Pois é, Douplus... Sempre foi assim, nunca foi descoberto o por quê.Parece ser uma limitação do IPB, uma pena, já me atrapalhou diversas vezes também.Abraços!Sou membro do fórum a mais de sete anos e nunca tinha reparado nisso! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Saint Kidd
Olá,
estou criando um programa em que o usuário escolha se ele quer fazer uma conversão de um string para binário ou de binário para strings.
Por exemplo:
Digite uma frase: Conversor binário
Saída em binário: 00100100 00100110 10100101 00010010 (É só um exemplo)
Digite a sentença binária: 00100100 00100110 10100101 00010010 (É só um exemplo)
Saída: Conversor binário
Pra passar de string para binário eu já consegui fazer, mas estou tendo problemas para passar de binário para string.
Alguém sabe como eu posso fazer isso?
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.