Utilizzando questo sito accetti il nostro uso dei cookie. Approfondisci

Convertire indirizzo ip da stringa a binario decimale in C/C++

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?

Scegli uno tra i migliori hosting per WordPress

HOSTING

Scegli uno tra i migliori hosting per WordPress

Hosting

Scegli uno tra i migliori temi WordPress professionali

GRAFICA

Scegli uno tra i migliori temi WordPress professionali

Grafica

Guide e risorse per gestire il sito WordPress a 360°

GESTIONE

Guide e risorse per gestire il sito WordPress a 360°

Gestione

EMAIL NEWSLETTER

Vuoi ricevere i miei ultimi articoli
comodamente nella tua email? È gratis!
Ben 3552 persone lo stanno già facendo!
Anonimo
   
con le dita sempre in costante, frenetico movimento sulla tastiera… vengo spesso trascinato e catturato “in rete” per colpa delle mille idee che mi girano per la testa (prima o poi troverò quella giusta)… dal futuro incerto (nonostante una laurea, e chi non lo è?..siamo in tanti!) .. credo fortemente nella condivisione della conoscenza!
3 Commenti
  • alex

    che nerd!!

    • Roberto

      già :) e te come ci sei finito qui??? sei proprio come me 😉

      • alex

        è un vizio di “famiglia” :)

Seguimi

Scarica gli ebook gratuiti

Vuoi creare e gestire il tuo blog WordPress autonomamente ed in maniera gratuita?

Allora scarica gratuitamente gli ebook Blogging Box e Le 30+ cose da non fare con WordPress, inserisci la tua email qui sotto:
13584+
Scarica gratuitamente gli ebook!

Per maggiori informazioni guarda questa pagina per la Blogging Box e questa per le 30+ cose da non fare con WordPress.

Scarica gli ebook gratuiti

Vuoi creare e gestire il tuo blog WordPress autonomamente ed in maniera gratuita?

Allora scarica gratuitamente gli ebook Blogging Box e Le 30+ cose da non fare con WordPress, inserisci la tua email qui sotto:
13584+
Scarica gratuitamente gli ebook!

Per maggiori informazioni guarda questa pagina per la Blogging Box e questa per le 30+ cose da non fare con WordPress.
Unisciti agli oltre 10999 lettori
che seguono questo blog
3152
982
2251
4614