-
Posts
16 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
posts postados por Gabriel Fernandes_712485
-
-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int byte[4], b, i, x = 34;
int bytes[4], c, o, z = 34;
int ipdecimal[4];
char mascara_binario[36] = "";
char ip_binario[36] = "";
char wildcard[36] = "";
char enderecoderede[36] = "";
int op, d, cont, pot;
do
{
printf("\n\nSeja bem vindo ao conversor de IP decimal para binario !");
printf("\n1. Para digitar o IP e a Mascara de Rede");
printf("\n2. Sair");
printf("\nUsuario, por favor, digite a sua opcao: ");
scanf("%d", &op);
switch(op)
{
case 1:
printf("\nDigite o endereco do seu IP: (XXX.XXX.XXX.XXX) ");
scanf("%d.%d.%d.%d",&byte[0], &byte[1], &byte[2], &byte[3]);
ipdecimal[0]=byte[0];
ipdecimal[1]=byte[1];
ipdecimal[2]=byte[2];
ipdecimal[3]=byte[3];
printf("\nDigite o endereco da sua Mascara de Rede: (XXX.XXX.XXX.XXX) ");
scanf("%d.%d.%d.%d",&bytes[0], &bytes[1], &bytes[2], &bytes[3]);
for(b = 3; b >= 0; b--) //calculo da rede em binario
{
i = 8;
while(i--)
{
ip_binario[x--] = (byte % 2) ? '1' : '0';
byte /= 2;
}
if(
ip_binario[x--] = '.';
}
for(c=3; c>= 0; c--) //calculo da mascara em binario
{
o = 8;
while(o--)
{
mascara_binario[z--] = (bytes[c] % 2) ? '1' : '0';
bytes[c] /= 2;
}
if© mascara_binario[z--] = '.';
}
for(d=0 ; d<36 ; d++) //popularizando o vetor wildcard com o valor da mascara de rede
{
wildcard[d]=mascara_binario[d];
}
for(d=0 ; d<36 ; d++) //calculando o wildcard (negação da mascara)
{
if(wildcard[d] == '1')
{
wildcard[d] = '0';
}
else
{
if(wildcard[d] == '0')
{
wildcard[d] = '1';
}
}
}
cont=0;
pot=0;
for(d=28 ; d<=36 ; d++) //contador
{
if(wildcard[d] == '1')
{
cont++;
}
}
pot = pow(2, cont);
pot = pot-1;
/*
for(d=0 ; d<36 ; d++){
enderecoderede[d]=ip_binario[d]*mascara_binario[d];
}
*/
for(d=0 ; d<36 ; d++) // calculo de endereco de rede
{
if(ip_binario[d]==mascara_binario[d])
{
enderecoderede[d]=ip_binario[d];
}
else
{
enderecoderede[d]='0';
}
}
printf("O seu ip em binario e: %s\n", ip_binario);
printf("A sua mascara em binario e: %s\n", mascara_binario);
printf("O seu wildcard e: %s\n", wildcard);
printf("O seu broadcast e: %d.%d.%d.%d\n", ipdecimal[0], ipdecimal[1], ipdecimal[2], pot);
printf("O seu endereco de rede e: %s\n", enderecoderede);
printf("%d %d", pot, cont);
}
}
while(op!=2);
}
Fiz usando uma comparação, pois multiplicando para descobrir o endereço de rede não deu certo.
Olliver, porque utilizamos o "?" e "/="?
Linha 52/53?
Abraços !
-
Olliver, estou precisando de mais uma ajuda, se possível.
Estou tentando calcular o endereco de rede, que se da pelo binario do IP x (vezes) o binario da mascara de rede.
Estou utilizando o for que fica na linha 97 para isso.
Mas, na hora de exibir o resultado, não obtive sucesso.
Link : https://www.sendspace.com/file/lzp4pn
Obrigado !
-
Perfeito olliver !
Entendi perfeitamente.
Obrigado pela ajuda, grande abraço !
-
Funcionamento está perfeito, olliver.soul.
Porém, não tenho conhecimento ainda em ponteiros.
Poderia fazer uma explicação da utilização no código?
Obrigado pela ajuda !
-
Boa tarde pessoal.
Estou desenvolvendo em C, um código onde recebe de entrada o endereço de IP e a máscara de rede.
Preciso retornar, o IP em binário, a máscara de rede em binário, o endereço de rede, broadcast e wildcard.
Até o momento, estou transformando em binário sem problemas.
Porém, não consigo fazer com que apareca o binário na ordem correta ao usuario.
Necessito da ordem para calcular o endereço de rede, broadcast e wildcard.
Agradeço desde já todas as ajudas.
Obrigado !!
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais
Calculo de Endereço IP em Binário
em C/C#/C++
Postado
Perfeito olliver.
Muito obrigado, grande ajuda.
Forte abraço !