Convertire indirizzo ip da stringa a binario decimale in C/C++
Pubblicato da Roberto Iacono il 15/12/2010 in Informatica |
Questo post nasce dall’esigenza che ho avuto per motivi scolastici di dover convertire un indirizzo ip passato come stringa in indirizzo ip in binario decimale (non binario stringa, anche se è quasi uguale). Ho perso molto tempo per trovare questa soluzione che sicuramente non è ottimizzata, però funziona! Così voglio risparmiare a chiunque stia cercando una cosa simile, ogni fatica e tempo perso inutilmente, senza contare il nervoso!!!
Praticamente gli passo un indirizzo ip (preimpostato): 10.0.255.10
e lui mi ritorna un indirizzo ip binario: 00001010.00000000.11111111.00001010
Ecco il codice da salvare come nomefile.cpp
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char str[] = "10.0.255.10"; //stringa che andremo a leggere nel pacchetto
char *i = str;
char **moreStr = NULL;
char primo[9],secondo[9],terzo[9],quarto[9];
int k=0;
int ip[4];
int nDot = 0;
while( *i++ != '\0' )
{
if( *i == '.' )
++nDot;
}
moreStr = (char **) malloc( (nDot+1) * sizeof(char *) );
if( moreStr != NULL ) //separa l'ip nei 4 ottetti
{
int pos = 0;
i = str;
moreStr[ pos++ ] = i;
while( *i++ != '\0' )
{
if( *i == '.' )
{
*i = '\0';
moreStr[ pos++ ] = ++i;
}
}
//converte gli ip in decimale
for (k=0;k<4;k++)
ip[k]=atoi(moreStr[k]);
int n,r=0,bin[4][10],l=0,z; //bin è la matrice che rappresenta gli ottetti dell'ip
int j=7;
//mette a 0 tutti i valori, così avrò gli indirizzi a 8 cifre (compresi gli 0 )
for(z=0;z<4;z++){
j=7;
r=0;
n=ip[z];
for(l=0;l<8;l++)
bin[z][l]=0;
//trasforma in binario
while (n>0) {
int r = n %2;
bin[z][j] = r;
n = n/2;
j--;
}
//stampa gli ottetti uno alla volta
printf("ottetto %d: ",z);
for (l=0;l<8;l++)
printf("%d",bin[z][l]);
printf("\n");
}
//stampa l'ip completo in binario
printf("Indirizzo ip completo: ");
for(z=0;z<4;z++){
for(l=0;l<8;l++){
printf("%d",bin[z][l]);
}
if(z<3)
printf(".");
}
printf("\n");
}
return 0;
}
Spero di esserti stato d’aiuto
VUOI CREARE IL TUO SITO O BLOG WORDPRESS?
EMAIL NEWSLETTER
Vuoi ricevere i miei ultimi articolicomodamente nella tua email? È gratis!
Ben 741 persone lo stanno già facendo!
3 Commenti
Lascia un Commento
Lascia un commento
sponsor





16/12/2010 alle 02:55
che nerd!!
16/12/2010 alle 03:57
già
e te come ci sei finito qui??? sei proprio come me
23/12/2010 alle 03:50
è un vizio di “famiglia”